using System.Reflection; using WeEngine.Enum; using WeEngine.Packages; namespace WeEngine.Module.Runner { public class PackageRunnerModuleContextBase { private IPackageRunnerModule PackageRunnerModule { get; } public string ModuleName { get; } public PackageRunnerModuleContextBase(PackageRunnerModuleBase packageRunnerModule) { PackageRunnerModule = packageRunnerModule; } public PackageRunnerModuleContextBase(string moduleName,PackageInfo package) { ModuleName = moduleName; //string className = $"WeEngine.Module.Runner.{moduleName}"; string className = $"WeEngine.Module.Runner.{moduleName}"; Assembly asm = Assembly.GetExecutingAssembly(); object[] parameters = new object[1]; // 定义构造函数需要的参数,所有参数都版必须为Object parameters[0] = package; PackageRunnerModule = (IPackageRunnerModule)asm.CreateInstance(className, true, BindingFlags.Default, null, parameters, null, null); } /// /// 运行方案包 /// /// /// /// public bool Run(NodeBase node, OperationType operationType) { return PackageRunnerModule.Run(node, operationType); } /// /// 运行方案包 /// /// /// /// public bool Run(string path, OperationType operationType) { return PackageRunnerModule.Run(path, operationType); } } public class PackageRunnerModuleContext : PackageRunnerModuleContextBase { public PackageRunnerModuleContext(PackageRunnerModuleBase packageRunnerModule) : base(packageRunnerModule) { } public PackageRunnerModuleContext(string moduleName,PackageInfo package) : base(moduleName,package) { } } }