這樣做的正確方法是什麼? 假設我們的項目中有一些第三方庫,我們需要提供一些密封的控件。 新的小部件將被創建並使用MEF添加到應用程序中,他們應該能夠從核心應用程序中導入一些控件。 那麼如何正確導出這些控件呢?在MEF中公開第三方視覺控制的正確方法
1
A
回答
0
如果您不能修改原始類(如ThirdPartyComponent
),那麼你可以做通過屬性出口的另一個類(如ThirdPartyComponentExporter
):
public class ThirdPartyComponentExporter
{
[Export(typeof(ThirdPartyComponent))]
public ThirdPartyComponent Foo
{
get
{
return new ThirdPartyComponent();
}
}
}
對於可視化控件,您可能必須使用CreationPolicy.NonShared
以防止MEF在不同地點重複使用相同的實例。
0
如何在「導出」類中包裝第三方控件,然後通過包裝器訪問此控件?
+0
這實際上是我現在正在做的。但是我失去了Blendability,因爲我無法再將導出的控件添加到Xaml中,所以它似乎不是正確的方法。我需要共享單個控件的實例,因此現在即使它已經可以訪問(例如在Main頁面中),我必須使用導入機制並將其添加到代碼隱藏的某個容器中。 – incognito 2010-10-26 14:48:31
相關問題
- 1. WPF MEF和第三方庫
- 2. 控制第三方程序
- 3. WPF,第三方控制
- 4. 如何公開第三方課程?
- 5. 獲取控制器方法調用方(第三方webservice)
- 6. 公開控制器的類方法來查看輔助方法?
- 7. 在didSelectRowAtIndexPath上推視圖控制器的正確方法
- 8. 強制執行第三方方法virtuality
- 9. AngularJS控制器:正確的方法
- 10. 在Ember CLI中訪問第三方庫(如D3)的正確方法?
- 11. 在Ruby中重寫第三方方法
- 12. 在第三方DLL中調用方法
- 13. asp.net的第三方控件
- 14. 擴展第三方Angular控制器
- 15. 控制第三方插件組件
- 16. 控制第三方應用程序
- 17. 控制第三方重裝javascript
- 18. VB6:獲取第三方控制
- 19. 控制第三方腳本圖像
- 20. 第三方安裝的視覺工作室部署
- 21. 移動到另一個視圖控制器的正確方法
- 22. 卸載/重新加載視圖控制器的正確方法
- 23. 將viewController設置爲根視圖控制器的正確方法
- 24. 定製Segue公司正確的方式
- 25. 在codeIgniter視圖中使用Model的方法的正確方法?
- 26. 如何在視圖模型中正確調用控制器中的JsonResult方法?
- 27. 使用第三方javascript庫驗證視覺流屏幕字段
- 28. Thymeleaf中的公開方法
- 29. 捕捉控制的正確方法+在ncurses中的鍵
- 30. 在Rails 4控制器中調用方法的正確方法是什麼?
共享默認創建策略?我嘗試了類似的東西,並添加了我想要在用戶控件內導出的控件,並通過屬性對其進行了公開。然後我將該用戶控件添加到主頁面(因爲我想在視覺設計器中看到導出的控件,而這是我設法實現的唯一方法)。它看起來像兩個不同的可導出控件實例正在創建,一個是由MEF創建的,另一個是不同的實例,因爲我添加了一個包含可導出頁面的用戶控件。 – incognito 2010-10-26 15:06:14
yes shared是默認的創建策略。 – blindmeis 2010-10-26 15:18:04
@Incognito:默認情況下,MEF將嘗試重用它自己創建的實例。但是它不會重用* you *創建的實例,如您在此處所述。它不知道這些實例。 – 2010-10-26 15:23:30