簡體   English   中英

C#,反射,插件,程序集

[英]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.

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