Files
tnb.server/common/Tnb.Common.Core/Job/DynamicJobCompiler.cs
2023-05-31 10:19:05 +08:00

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));
}
}