利用反射动态加载插件的简单例子[xgluxv]
最近想学习一下.net window form的编程知识,在ms的网站上浏览的时候看到一个 可扩展程序的例子,就是可以动态加载一个个dll,使之在主窗口中可以看到并获取dll的功能。我把代码修改了一下,好像条例更清楚一点了 :)
这里提供源代码。
代码里有三个项目
ExtensiableApi:定义了两个接口,一个纯虚类,在ExtensionAPI.cs文件里,IToolBarProvider,IMenuProvider,DocumentForm 这个项目 无论是主程序还是插件在实现时必须都要引用,主程序就是依靠这些接口和类把插件里的信息提取出来,相应的也之后实现了这些接口和类的项目,才能作为我们这个程序的插件使用。
ExtensiableApp:项目里 ExtensibleAppForm 是主程序的窗口,他会把插件里实现的IToolBarProvider,IMenuProvider作为他的菜单项和工具栏里的项,而把实现类DocumentForm 作为菜单里New项的一个子项。本项目的核心其实都在PluginManager.cs中,里面实现了如何创建一个临时的domain,如何利用反射动态提取插件里的内容,如果实例化反射出来的类。需要重点看一下。
Example1:简单实现了ExtensiableApi里的接口和类的例子。
路漫漫其修远兮 吾将上下而求索
my blog