DynamicJobCompiler.cs 730 B

123456789101112131415161718192021222324252627
  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. var assembly = builder.GetAssembly();
  21. var jobType = assembly.GetTypes().FirstOrDefault(u => typeof(IJob).IsAssignableFrom(u));
  22. return jobType;
  23. }
  24. }