我目前正在使用MEF掃描/撰寫擴展到我的應用程序。我想將默認創建策略更改爲非共享(代替共享),但是要創建策略以便創建策略可以通過屬性進行覆蓋。換句話說,如果我沒有在導出中指定創建策略,我希望MEF使用非共享。MEF - 將默認創建策略更改爲NonShared
我以前的實現不再適用於我,因爲它改變了所有導入的必需創建策略。所以如果我重寫創建策略,導出不會被組合。
我已經搜索了四周,最近我可以得到的是新的RegisrationBuilder,但我在VS2010中使用.NET 4(所以MEF 1)。我也無法弄清楚ExportProviders的一種方式。
任何幫助非常感謝,提前致謝!
我還沒有嘗試過的TransientCompositionContainer但但它看起來像它改變了CreationPolicy.Any(默認值)CreationPolicy.NonShared。因此,具有顯式CreationPolicy.Shared的導入應該仍然有效,其他所有內容都應該是暫時的。 –
另一種方法(儘管我從未嘗試過)將創建一個自定義導入屬性(這應該類似於自定義導出屬性指南http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata)默認情況下將RequiredCreationPolicy設置爲NonShared。然後使用此屬性更新所有導入。 Apparetnly這不像TransientCompositionContainer那樣優雅。 –