2010-10-30 78 views
1

我正在编写一个插件系统:每个插件都在自己的程序集中,必须由autofac加载,并由具有设置插件类型的参数的属性进行签名。我将能够在我的asp.net mvc应用程序中按类型解析插件,我该怎么做?每个插件都由一个抽象类插入并覆盖预定义的方法。Autofac - 按类型注册插件

回答

2

RegisterAssemblyTypes()可能是起点,你以后:

Assembly[] assembliesWithPlugins = // find these somehow 
var builder = new ContainerBuilder(); 
builder.RegisterAssemblyTypes(assembliesWithPlugins) 
    .AssignableTo<MyAbstractPluginType>() 
    .WithMetadata(t => GetPluinTypeFromMyAttribute(t)); 

一旦你注册你的插件这种方式,Autofac的元数据支持,您就可以使用它们(http://code.google.com/p/autofac/wiki/Metadata)。我从你后来的一些问题中推测你已经走上了这条道路。

祝你好运。 尼克

1

我个人会使用MEF这个和使用Autofac's MEF integration

+0

你为什么要使用mef?我不知道我是否错了,但我可以使用autofac元数据或可能命名/键控功能? – Stefano 2010-10-30 22:29:48

+0

两者都是有效的方法 - 如果您的插件将由第三方开发人员编写,那么MEF将提供.NET标准机制来定义它们。 – 2010-11-05 01:25:37

+0

对不起,我的假设是,插件将是第三方:) – 2010-11-05 04:56:07

0

在每个插件程序集中创建一个Autofac.Module。在那里注册你的插件,并从主应用程序加载你的插件DLL,寻找模块,在容器中注册。 然后解决并玩得开心;)。