Module MEF将模块添加到目录两次

Module MEF将模块添加到目录两次,module,mef,catalog,Module,Mef,Catalog,您知道如何将同一模块添加到具有不同参数的目录中两次吗? ITest acc1 = new smalltest("a", 0) ITest acc2 = new smalltest("b", 1) AggregateCatalog.Catalogs.Add(??) AggregateCatalog.Catalogs.Add(??) 提前谢谢 由于MEF仅限于其属性的使用,并且可以通过使用导入和导出属性进行配置,这与IoC容器通常提供的灵活性不同,因此如何在MEF中扩展部分,可以从引用的DLL进

您知道如何将同一模块添加到具有不同参数的目录中两次吗?

ITest acc1 = new smalltest("a", 0)
ITest acc2 = new smalltest("b", 1)

AggregateCatalog.Catalogs.Add(??)
AggregateCatalog.Catalogs.Add(??)

提前谢谢

由于MEF仅限于其属性的使用,并且可以通过使用导入和导出属性进行配置,这与IoC容器通常提供的灵活性不同,因此如何在MEF中扩展
部分
,可以从引用的DLL进行扩展,您还可以通过创建一个类来执行类似的操作,该类通过
[ExportAttribute]
公开一些属性,从而继承先前的MEF部件。该属性不仅限于类上的用法,还可以应用于属性。比如,像这样的东西怎么样

公共类部件导出
{
[导出(类型(ITest))]
公共实施A
{
获取{返回新的实现(“A”,5);}
}
[导出(类型(ITest))]
公共实施B
{
获取{返回新的实现(“B”,10);}
}
}
公共接口测试
{
无效WhoAmI(行动);
}
[出口]
公共类实现:ITest
{
私有字符串_方法;
私有只读int_值;
公共实现(字符串方法,int值)
{
_方法=方法;
_价值=价值;
}
公共无效WhoAmI(行动)
{
作用(_方法,_值);
}
}
[测试类]
公开课考试
{
[测试方法]
公开无效测试()
{
var catalog=newassemblycalog(System.Reflection.Assembly.getExecutionGassembly());
CompositionContainer=新的CompositionContainer(目录);
var tests=container.GetExportedValues();
foreach(测试中的var测试)
{
test.WhoAmI((s,i)=>Console.WriteLine(“i是{0},值为{1}.”,s,i));
}
}
}
这将向控制台输出以下内容:

我是值为5的A。
我是B,值为10