我想將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