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