using JNPF.DependencyInjection;
using JNPF.Schedule;
namespace JNPF.Common.Core;
///
/// 动态作业编译.
///
public class DynamicJobCompiler : ISingleton
{
///
/// 编译代码并返回其中实现 IJob 的类型.
///
/// 动态编译的作业代码
///
public Type BuildJob(string script)
{
// 初始化
NatashaInitializer.Preheating();
// 动态创建作业
var builder = new AssemblyCSharpBuilder("JNPF.Common.Core")
{
Domain = DomainManagement.Random()
};
builder.Add(script);
return builder.GetAssembly().GetTypes().FirstOrDefault(u => typeof(IJob).IsAssignableFrom(u));
}
}