4
我正在玩.NET 4.0 beta 2中的新名稱空間System.ComponentModel.Composition,也稱爲Managed Extensibility Framework。必須設置MEF異常「'SourceProvider'」。
我用下面的C#示例,其中Monkey
進口了Banana
:
public interface IBanana
{
}
[Export(typeof(IBanana))]
public class Banana : IBanana
{
}
public class Monkey
{
[Import(typeof(IBanana))]
public IBanana Banana { get; set; }
}
然而,當我嘗試撰寫猴子作爲然後跟隨我得到一個InvalidOperationException
與這個對象一直沒有消息「初始化 - 屬性「SourceProvider」必須設置「:
var exportProvider = new CatalogExportProvider(new TypeCatalog(typeof(Banana)));
var container = new CompositionContainer(exportProvider);
var monkey = new Monkey();
container.ComposeParts(monkey);
缺少什麼我在這裏?我知道我可以直接傳遞該目錄而不將其包裝在CatelogExportProvider中,但是不應該也可以工作?
我通過用反射器檢查System.Component.Composition.dll得出了相同的結論。至於要手動創建ExportProviders的原因,如果您希望構建可以回退默認值的容器而不抱怨多個匹配導出,則這是必需的。 – 2009-12-17 22:31:20