我有一個MEF的CompositionContainer,一個合同(如IFoo)和一個模塊(Prism模塊,但這裏沒什麼關係,只是一些組件)。 我想在我的模塊中註冊合同的實現(FooImpl)。MEF:如何手動配置導出合同執行
如果它的團結我願意做這樣的:
unity.RegisterType<IFoo, FooImpl>().
這就是全部。 隨着MEF我感到困惑。我必須用ExportAttribute標記我的實現,但這會導致它自動導出。我想自己管理這個。 看看代碼:
class MyModule: IModule {
private CompositionContainer m_container;
public MyModule(CompositionContainer container) {
m_container = container;
}
public void Initialize() {
??? I want something like m_container.CreateExport<IFoo, FooImpl>()
}
}
public interface IFoo {}
public class FooImpl : IFoo {
//[ImportingConstructor]
public FooImpl(ISomeService svc) {}
}
在初始化我想manualy 出口 FooImpl爲IFoo的合同不是依靠ExportAttribute上FooImpl類。 我知道我只是可以創建一個實例FooImpl(在上面的MyModule.Initialize中),但是 FooImpl對其他組件/服務具有構造函數依賴關係,我希望在創建時解析它們。
所以可能我應該問:如何手動添加具有CompositionContainer實例和合同的導出?然後將它標記爲ImportingConstructorAttribute?
謝謝,我會看看。但我想用已有的CompositionContainer來做到這一點。 – Shrike 2010-08-17 17:10:25