MEF多个实例相同的构造函数
本文关键字:构造函数 实例 MEF | 更新日期: 2023-09-27 18:14:34
是否有方法为MEF创建具有不同构造函数参数的同一类的多个实例?
如
class MefTest
{
[Test]
public void Test()
{
var aggregateCatalog = new AggregateCatalog(new TypeCatalog(typeof(MyExportType)));
var compositionContainer = new CompositionContainer(aggregateCatalog);
compositionContainer.ComposeExportedValue("Ctor1", "Contructor argument 1");
compositionContainer.ComposeExportedValue("Ctor2", "Contructor argument 2");
var exportedValues = compositionContainer.GetExportedValues<MyExportType>();
Assert.AreEqual(2, exportedValues.Count());
}
}
[Export]
class MyExportType
{
internal string Name { get; set; }
[ImportingConstructor]
internal MyExportType([Import("Ctor1")][Import("Ctor2")]string name)
{
this.Name = name;
}
}
不行,没办法。
您可以在文档中读到,用[ImportingConstructor]
属性装饰的.ctor将使用其参数作为导入。每个导入必须根据您可选提供的默认策略或属性(例如[ImportMany]
或[Import(AllowDefault=true)]
)来满足。
所以你不能使用。ctor参数来满足你的需要,它们是为导入"保留"的。