Dot-Net
如何在沒有 Export 屬性的情況下在 MEF 中導出類型?(例如以程式方式)
我似乎找不到任何有關如何執行此操作的文章或連結,這似乎是一個明顯的問題(例如,當您沒有原始碼或想要使用不是為 MEF 編寫的現有類型時)
如果您希望將現有對象實例添加到容器中,可以使用以下
CompositionContainer.ComposeExportedValue方法:container.ComposeExportedValue<MyClass>(myClassInstance);不過,您真正要尋找的可能是新的基於約定的程式模型,它允許您根據命名約定而不是屬性創建元件,但此功能僅在 .NET 4.5 中可用。
myAssembly使用範例(這將導出實現IController為的每種類型IController):var registration = new RegistrationBuilder(); registration.ForTypesDerivedFrom<IController>() .Export<IController>(); var catalog = new AssemblyCatalog(myAssembly, registration); var container = new CompositionContainer(catalog);可以在此處找到如何使用 MEF 的新約定模型的一個很好的範例。
希望這可以幫助。