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

简介:

最近想学习一下.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   ,如需转载请自行联系原作者

相关文章
|
5月前
|
C# 图形学 数据安全/隐私保护
Unity数据加密☀️反射的用法:变量、属性、方法、重载,反射在DLL中的使用方法
Unity数据加密☀️反射的用法:变量、属性、方法、重载,反射在DLL中的使用方法
|
8月前
|
JavaScript
js中如何使用工厂方式和构造函数创建对象,web开发项目实例
js中如何使用工厂方式和构造函数创建对象,web开发项目实例
|
8月前
|
存储 JavaScript 前端开发
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
44 0
|
前端开发 JavaScript
前端祖传三件套JavaScript的对象之对象创建的构造器模式
在 JavaScript 中,对象是一个非常重要的数据类型,用于表示一组相关属性和方法。创建对象的方式有多种,其中构造器模式是一种比较常见的方式。本文将介绍构造器模式的概念、使用方法以及一些常见的注意事项。
141 0
|
前端开发 JavaScript
前端祖传三件套JavaScript的对象之继承的构造继承
在 JavaScript 中,继承是一种非常重要的概念,它可以帮助我们避免重复代码的编写,并且提高代码的可维护性和可读性。JavaScript 中的继承有多种方式,其中构造继承是一种常见的方式。本文将介绍构造继承的概念、使用方法以及一些常见的注意事项。
93 0
|
设计模式 安全 Java
反射的基本使用
2. 反射机制 2.1 Java Reflection 2.2 Java 反射机制可以完成 2.3 反射相关的主要类 2.4 反射优点和缺点 2.5 反射调用优化-关闭访问检查 3. Class类 3.1 基本介绍 3.2 Class类的常用方法 3.3 获取Class类对象 3.4 哪些类型有Class对象 3.5 类加载 3.6 类加载流程 3.7 通过反射获取类的结构信息 3.8 通过反射创建对象 3.9 通过反射访问类中的成员 3.9.1 访问属性 3.9.2 访问方法
89 0
反射的基本使用
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )
150 0
|
监控 安全 Android开发
【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
542 0