问题:
如何将插件加载到控制台应用程序(最终是Windows服务)中,并在插件DLL中运行代码。
研究: StructureMap文档(当然) 一些stackoverflow线程,其中这个是最接近的。 使用StructureMap创建插件扫描器 我有3个项目: 控制台应用程序(Driver) 2个类库
控制台应用程序
研究: StructureMap文档(当然) 一些stackoverflow线程,其中这个是最接近的。 使用StructureMap创建插件扫描器 我有3个项目: 控制台应用程序(Driver) 2个类库
控制台应用程序
static void Main(string[] args)
{
ObjectFactory.Initialize(cfg => cfg.Scan(scanner =>
{
scanner.AssembliesFromPath(@"PATH TO PLUGIN DIR");
scanner.AddAllTypesOf<IPlugable>();
}));
var list = ObjectFactory.GetAllInstances<IPlugable>();
foreach (var plug in list)
{
plug.Run();
}
}
public interface IPlugable
{
void Run();
}
插件_2
public interface IPlugable
{
void Run();
}
public class PlugIn2 : IPlugable
{
public void Run()
{
Console.WriteLine(this.GetType().Name + "fired!");
}
}
public interface IPlugable
{
void Run();
}
public class PlugIn1 : IPlugable
{
public void Run()
{
Console.WriteLine(this.GetType().Name + "fired!");
}
}
输出结果:
ObjectFactory.GetAllInstances<IPlugable>();
返回没有对象:(
期望输出:Plugin_1和Plugin_2的2个对象实例。
提前致谢。