我们使用unity作为IoC。我们遇到了独特的问题。 我们已经创建了名为IPlugin的接口。这个接口在不同的第三方供应商之间共享,基于这个接口开发他们自己的插件。这些插件然后适合我们的系统。 供应商将提供他们的插件作为DLL。我们想要的是, 使用统一性,我们想要解析所有使用IPlugin接口实现的程序集类型。我知道这是通过MEF导出属性实现的,我想知道这是否可以通过Unity使用一些短的扩展来实现。Unity IoC动态解析程序集
我们的代码
Public interface IPlugin
{
Void ProcessData();
}
Public class DataProcessor
{
Var pluginList = unityContainer.ResolveAssemblies<IPlugIn>()
/*
There is no such method in unity but what we want is scan all assemblies in bin folder and load all types which are inheriting from IPlugIn
*/
}
供应商的组件
Public class AbcCompanyPlugIn : IPlugin
{
Void ProcessData()
{
// some code
}
}
Public class XyzCompanyPlugIn : IPlugin
{
Void ProcessData()
{
// some code
}
}
这是MEF的主要用例之一,您可以考虑将其用于应用程序的插件部分(同时让Unity保留其余的IoC需求)。 – dlev 2012-03-07 03:59:22
这不是设计目标Unity或其他IoC框架。所以如果你想要它,就像@dlev所建议的那样坚持MEF。 – 2012-03-07 06:08:46
@LexLi我不同意这不是DI容器工作的一部分。它们旨在组装松散耦合的应用程序。这与加载插件并将其添加到应用程序有何不同? – 2012-03-07 07:09:10