3
背景:我試圖讓我們MEF導入兩個實現IFoo的程序集。這樣做,毫不奇怪,我使用[ImportMany]導入所有給我一個IEnumerable>。然後,我的消費邏輯根據MetaData「Bar」確定要使用哪個導入程序集。如何使用MEF IsMultiple屬性
每個導出器都裝有一個ExportMetadata屬性。這工作得很好,當我有:
[Export(typeof(IFoo))]
[ExportMetadata("Bar", "Hello")]
public class Hello : IFoo
{...}
[Export(typeof(IFoo))]
[ExportMetadata("Bar", "World")]
public class World: IFoo
{...}
也就是說,我的IEnumerable有兩個IFoos。
我想定義一個作爲默認,所以如果不需要「你好」或「世界」,我會尋找與「默認」作爲我的酒吧元數據。我試圖做到這一點使用IsMultiple屬性是這樣的:
[Export(typeof(IFoo))]
[ExportMetadata("Bar", "Hello", IsMultiple = true)]
[ExportMetadata("Bar", "Default", IsMultiple = true)]
public class Hello : IFoo
{...}
問題:當我加入IsMultiple屬性和第二屬性,Hello類不再被拉入導致的IEnumerable。
問題:如何爲第二個/默認指定的MEF標記一個類?
謝謝!