利用反射动态加载插件的简单例子[xgluxv]

本文介绍了一个基于.NET WindowForms的应用程序如何通过动态加载DLL来扩展功能。通过定义通用接口和类,主程序能够识别并加载实现了特定接口的插件。文章提供了包含主程序和插件示例的完整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近想学习一下.net window form的编程知识,在ms的网站上浏览的时候看到一个 可扩展程序的例子,就是可以动态加载一个个dll,使之在主窗口中可以看到并获取dll的功能。我把代码修改了一下,好像条例更清楚一点了 :)
这里提供源代码
代码里有三个项目
ExtensiableApi:定义了两个接口,一个纯虚类,在ExtensionAPI.cs文件里,IToolBarProvider,IMenuProvider,DocumentForm 这个项目 无论是主程序还是插件在实现时必须都要引用,主程序就是依靠这些接口和类把插件里的信息提取出来,相应的也之后实现了这些接口和类的项目,才能作为我们这个程序的插件使用。

ExtensiableApp:项目里 ExtensibleAppForm 是主程序的窗口,他会把插件里实现的IToolBarProvider,IMenuProvider作为他的菜单项和工具栏里的项,而把实现类DocumentForm 作为菜单里New项的一个子项。本项目的核心其实都在PluginManager.cs中,里面实现了如何创建一个临时的domain,如何利用反射动态提取插件里的内容,如果实例化反射出来的类。需要重点看一下。

Example1:简单实现了ExtensiableApi里的接口和类的例子。

路漫漫其修远兮 吾将上下而求索



本文转自 lu xu 博客园博客,原文链接:http://www.cnblogs.com/dotLive/archive/2006/09/18/507689.html   ,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值