DynamicJobCompiler.cs 667 B

12345678910111213141516171819202122232425
  1. namespace Admin.NET.Core;
  2. /// <summary>
  3. /// 动态作业编译
  4. /// </summary>
  5. public class DynamicJobCompiler : ISingleton
  6. {
  7. /// <summary>
  8. /// 编译代码并返回其中实现 IJob 的类型
  9. /// </summary>
  10. /// <param name="script">动态编译的作业代码</param>
  11. /// <returns></returns>
  12. public Type BuildJob(string script)
  13. {
  14. // 动态创建作业
  15. var builder = new AssemblyCSharpBuilder("Admin.NET.Core")
  16. {
  17. Domain = DomainManagement.Random()
  18. };
  19. builder.Add(script);
  20. return builder.GetAssembly().GetTypes().FirstOrDefault(u => typeof(IJob).IsAssignableFrom(u));
  21. }
  22. }