1
如何在MEF容器中導出零件的現有實例。如果我有在容器中組成的類A,我需要在代碼的某些地方獲取實例,如果我調用GetExortedValue(),那麼如果類A使用CreationPolicy.NonShared簽名,那麼它將再次實例化並且我需要現在的一個。從MEF容器獲取導出的零件實例
在此先感謝...
如何在MEF容器中導出零件的現有實例。如果我有在容器中組成的類A,我需要在代碼的某些地方獲取實例,如果我調用GetExortedValue(),那麼如果類A使用CreationPolicy.NonShared簽名,那麼它將再次實例化並且我需要現在的一個。從MEF容器獲取導出的零件實例
在此先感謝...
顯然呼喚你的容器上GetExportedValue<T>
可能導致對T
一個新實例的產生(取決於所使用的部分CreationPolicy
),但有一個選項調用GetExport<T>
它會返回一個Lazy<T>
實例。這是生成並只產生一次奇異部分:
var part = container.GetExport<IMyInterface>();
在上面的例子中,part
將是Lazy<IMyInterface>
一個實例,因此當你第一次訪問part.Value
,在Lazy<IMyInterface>
電話綁定回委託容器創建並組成IMyInterface
實例並返回。隨後對part.Value
的調用將始終返回相同的實例。