2013-03-18 51 views

回答

4

它可以做,但不一定。這幾乎是你的設計決定。試想,如果你有幾類所有執行IPlugin

public class MyFirstPlugin : IPlugin 
{ 
    //implemented as per usual 
} 

public class MySecondPlugin : IPlugin 
{ 
    //implemented as per usual 
} 

如果你要註冊的插件註冊工具,DLL,你會看到如下結構:

- Server 
    - DLL 
     - MyFirdtPlugin 
     - MySecondPlugin 

然後,您可以添加步驟,在每個根據需要插件。

另一種方法是讓每個DLL一個插件,它會給你

- Server 
    - DLL1 
     - MyFirstPlugin 
    - DLL2 
     - MySecondPlugin 

我必須承認,這似乎有點小題大做 - 但它也取決於你如何使用您的解決方案。

+0

謝謝。我必須取消註冊並重新註冊dll才能顯示新插件。 – Gary 2013-03-18 19:43:50

+0

Ooo一個總是讓我(即使經過多年的這樣做)..當您加載DLL時,請確保您選中框以包含DLL中的所有插件。如果您以前只有一個,那麼只包含這個。 – glosrob 2013-03-18 20:52:33

+0

@加里你可以在這裏看到http://i.imgur.com/gGoghOB.jpg – glosrob 2013-03-18 20:58:45

1

是的,你可以創建不同的類庫項目中的每個插件,但這不是一個好的做法。我寧願將所有插件收集到一個類庫中。

請注意,從文件對話框中選擇您的程序集後,您必須單擊Load Assembly按鈕以加載實現IPlugin接口的所有類。

+0

你能詳細說明爲什麼這不是好的做法嗎?這不意味着如果你在一個插件中搞砸了一些東西,它會讓所有其他人停止工作?我目前正在試圖決定是否要走下單個項目路線或將所有插件放在一個類庫中? – Ant 2013-07-11 12:04:42

2

除了glosrob的回答,我猜你正在使用插件註冊工具來註冊你的插件。如果是這樣,您需要確保在將新插件添加到同一個dll之後,您需要使用註冊工具更新插件dll本身,以便您可以註冊您創建的新插件方法。

1

要回答這個問題 - 不,每個新插件都不必包含在新程序集中。

詳細說明 - 在技術上可以將所有插件代碼放在一個項目和一個文件中。

要警告 - 上述將是一個噩夢來管理所有的ifs和buts,所以這是一個可以但不應該的例子。

建議 - 我通常爲每個實體的插件都有一個單獨的項目,並使用開關處理所有消息。有時候,我可能會有兩到三個程序集,但是當你到達時,你會知道什麼時候該這樣做。通常,一個DLL就足夠了。

相關問題