我想将MEF用作我的项目的DI。我有一个项目,每个应该组成的类都驻留在那里(它们共享一个接口)。现在我想通过指定元数据值来创建其中的一个。这里的定义:带元数据的MEF GetExportedValue
public interface IGatewayResponseReader
{
object Read(string msg);
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value1")]
public class TestReader1 : IGatewayResponseReader
{
...
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value2")]
public class TestReader2 : IGatewayResponseReader
{
...
}
现在我想通过MEF建立TestReader1的实例,但我不知道如何通过元数据通过CompositionContainer中进行筛选。我想要类似于
Container.GetExportedValue<IGatewayResponseReader>();
但是指定元数据以选择要创建的类实例。
非常感谢您的帮助。
谢谢。
感谢菲尔,我感谢你的帮助:)。该死的,我试过这种方式,并没有工作,因为我不知道MetadataAttribute :(我花了5个小时试图弄清楚。谢谢 – Davita