我們使用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