31 lines
790 B
C#
31 lines
790 B
C#
using JNPF.DependencyInjection;
|
|
using JNPF.Schedule;
|
|
|
|
namespace JNPF.Common.Core;
|
|
|
|
/// <summary>
|
|
/// 动态作业编译.
|
|
/// </summary>
|
|
public class DynamicJobCompiler : ISingleton
|
|
{
|
|
/// <summary>
|
|
/// 编译代码并返回其中实现 IJob 的类型.
|
|
/// </summary>
|
|
/// <param name="script">动态编译的作业代码</param>
|
|
/// <returns></returns>
|
|
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));
|
|
}
|
|
} |