use*_*209 5 c# structuremap ioc-container
问题:将插件加载到控制台应用程序(最终是Windows服务)并在插件dll中运行代码
研究:StructureMap Docs(当然)一些stackoverflow线程这一个最接近. 使用StructureMap创建插件扫描程序
我有3个项目:Console App(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();
}
Run Code Online (Sandbox Code Playgroud)
Plugin_2
public interface IPlugable
{
void Run();
}
public class PlugIn2 : IPlugable
{
public void Run()
{
Console.WriteLine(this.GetType().Name + "fired!");
}
}
Run Code Online (Sandbox Code Playgroud)
public interface IPlugable
{
void Run();
}
public class PlugIn1 : IPlugable
{
public void Run()
{
Console.WriteLine(this.GetType().Name + "fired!");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
ObjectFactory.GetAllInstances<IPlugable>();
Run Code Online (Sandbox Code Playgroud)
不返回任何对象:(所需输出:Plugin_1和Plugin_2的2个对象实例
提前致谢.
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |