簡體   English   中英

如何在C#中開發基於動態插件的功能

[英]How to Develop Dynamic Plug-In Based Functionality in C#

我一直在尋找為我的應用程序提供插件支持的不同方法。 理想情況下,我將創建一個核心功能,並基於不同的客戶開發不同的插件/插件,如導入,導出數據等......有哪些方法可以通過插件架構使C#應用程序可擴展?

讓我們舉一個例子。 如果我們有一個程序包含一個主菜單(File,Edit,View等)以及一個TreeView,它顯示按制造商分組的不同品牌的汽車(福特,GM,目前)。 右鍵單擊汽車會顯示一個上下文菜單,唯一的選項是“刪除汽車”。

你怎么能開發應用程序以便可以部署插件,這樣你就可以讓一個客戶在TreeView中看到一個新品牌,讓我們說本田,並且還可以擴展汽車上下文菜單,這樣他們現在可以“畫一輛車” “?

在Eclipse / RCP開發中,擴展點和插件可以輕松處理。 C#如何處理它? 我一直在研究開發自己的插件架構並閱讀MEF。

MEF將是一個很好的起點。

Glenn Block的文章Managed Extensibility Framework:使用Managed Extensibility Framework在.NET 4中構建可組合應用程序提供了一個很好的概述。

順便說一句,不要被標題所迷惑 - 你也可以獲得.NET 3.5 SP1的MEF。

Visual Studio 2010使用MEF,所以我認為這是一個安全的選擇,這是MS的首選方式。 System.Addin似乎總是有點沉重,但如果你需要插件來始終工作並且你的代碼庫不斷發展,它可能是一個更好的選擇。

如果您關心隔離插件,則應閱讀AppDomains。 我有一個演示項目,我在這里幫助學習如何處理AppDomain中的隔離程序集 ,你可能會覺得這很有趣。 關於隔離的快速事實:只有你的類型應該越過邊界,這些類型應該被密封,從跨域事件處理中尖叫運行,並且插件永遠不應該擴展MarshallByRefObject。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM