用 .net 实现插件机制--

用 .net 实现插件机制--

ID:10628659

大小:53.50 KB

页数:3页

时间:2018-07-07

用 .net 实现插件机制--_第1页
用 .net 实现插件机制--_第2页
用 .net 实现插件机制--_第3页
资源描述:

《用 .net 实现插件机制--》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用.NET实现插件机制>>.提供的反射(Reflection)机制可以很方便的加载插件。本文提供一种方法,可以灵活的正确的载入所需的插件。在.中,一个完整的类型名称的格式如"类型名,程序集名"。例如:"System.Configuration.NameValueSectionHandler,System,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"。类型名为:System.Configuration.NameValueSectionHandler,这是带名字空间的完整类型名。你也可

2、以使用该类型的FullName得到。如:stringtypeName=typeof(NameValueSectionHandler).FullName;程序集名为:"System,Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089",程序集名为System,系统为自动为其适配扩展名(如System.dll或System.exe);Version、Culture、PublicKeyToken为程序集的具体版本、文化背景、签名,没有特定要求,这些都可以省略。我们可以根据类型的名称,来动态载入一

3、个所需要的类型。如:stringtypeName="System.Configuration.NameValueSectionHandler,System";Typet=Type.GetType(typeName);Objectobj=Activator.CreateInstance(t);或System.Configuration.NameValueSectionHandlerobj=(System.Configuration.NameValueSectionHandler)Activator.CreateInstance(t);此时,obj就是所需要的类型实例。通常

4、的插件,是需要实现一定的接口的类。因此,在载入插件之前,需要确定该插件类型是否是合适的。比如,一个插件的接口为IPlugin,那么我们可以用如下方式来识别:stringinterfaceName=typeof(IPlugin).FullName;stringtypeName="Muf.MyPlugin,MyPlugin";Typet=Type.GetType(typeName);if(t==null

5、

6、!t.IsClass

7、

8、!t.IsPublic

9、

10、t.GetInterface(interfaceName)==null){returnnull;//不是所需要的插件}总

11、结上述代码,我们可以做出通用的加载插件的代码:///<summary>///动态装载并创建类型,该类型拥有指定接口///</summary>///<paramname="className">类型名称</param>///<paramname="interfaceName">指定的接口名称</param>///<paramname="param">指定构造函数的参数(null或空的数组表示调用默认构造函数)</param>///<returns>返回所创建的类型(

12、null表示该类型无法创建或找不到)</returns>publicstaticobjectLoadObject(stringclassName,stringinterfaceName,object[]param){try{Typet=Type.GetType(className);if(t==null

13、

14、!t.IsClass

15、

16、!t.IsPublic

17、

18、t.IsAbstract

19、

20、t.GetInterface(interfaceName)==null){returnnull;}objecto=Activator.CreateInstance(t,param

21、);if(o==null){returnnull;}returno;}catch(Exceptionex){returnnull;}}以后,我们就可以使用LoadObject载入任何所需的插件。插件配置,一般有两种方法:1.将插件类型名称写在配置文件中,如app.config。配置文件的使用可以参考沐枫专栏的其它文章。12下一页>>>>这篇文章来自..,。2.指定一个目录为插件目录,然后在该目录中所有的程序集(如*.dll)全部加载,并用反射机制,获取所有的公共类型,并全部尝试用LoadObject加载,加载成功的就是合适的插件。上一页1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。