DynamicJobCompiler.cs 730 B

12345678910111213141516171819202122232425262728
  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. NatashaInitializer.Preheating();
  16. // 动态创建作业
  17. var builder = new AssemblyCSharpBuilder("Admin.NET.Core")
  18. {
  19. Domain = DomainManagement.Random()
  20. };
  21. builder.Add(script);
  22. return builder.GetAssembly().GetTypes().FirstOrDefault(u => typeof(IJob).IsAssignableFrom(u));
  23. }
  24. }