[英]MEF multiple instances same constructor
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;
}
}
该示例将抱怨多个ImportAttribute。
不,没有办法。
正如您可以在文档中阅读的那样,装饰有[ImportingConstructor]
属性的.ctor会将其参数用作导入。 必须根据您可选提供的默认策略或属性(例如[ImportMany]
或[Import(AllowDefault=true)]
)满足每次导入。
因此,您无法使用.ctor参数满足您的需求,因为导入将“保留”它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.