[英]C#, reflection, plugins, assemblies
我是這個菜的菜鳥。 我想制作一個使用插件的C#程序(作為一種學習方式)。 但是,我不明白我在哪里出問題了:
PluginClass = a.CreateInstance("MBPlugin");
PluginClass的類型為Object。 但是,它始終為空。 a是Assembly類型。 該程序集肯定包含一個名為MBPlugin的類。 那到底是什么?
將該類型僅命名為沒有名稱空間的MBPlugin是不尋常的。 您應該提供名稱空間限定的名稱,例如“ MyCompany.Plugins.MBPlugin”。
我用於某些項目的一種方法:
創建一個接口IPlugin
,該接口定義所有插件所需的方法。 就我而言,這主要是一個Register()
函數,該函數使插件有機會執行其必須執行的任何操作。
然后使用Assembly.GetTypes
枚舉程序集中定義的所有類型,並查找定義該接口的類(使用typeof(IPlugin).IsAssignableFrom()
)。 繼續使用這些類型。
另外,您可能想看看MEF之類的框架,這些框架(除其他外)確實滿足您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.