.Net中通过反射技术的应用----插件程序的开发入门
2012-03-25 17:39
483 查看
再开始之前,先学习基本基本的概念.
程序集:所有.Net类都是定义在某个Assembly(程序集)中的,.Net基本类是定义在mscorlib.dll中。exe也可以看做是类库,也可以引用。.net的exe也是Assembly,
.net中的exe和dll的区别就是exe中包含入口函数,其他没有区别,exe也可以当成dll那样引用、也可以反编译。
GAC:全局程序集缓存。公用的Assembly放到GAC中,我们新建一个项目,会发现引用的程序集,如system,找不到这个dll放在哪里,实质上系统已注册到全局GAC中
程序集包含描述它们自己的内部版本号和它们包含的所有数据和对象类型的详细信息的元数据。
程序集具有以下特点: 程序集作为 .exe 或 .dll 文件实现。 通过将程序集放在全局程序集缓存中,可在多个应用程序之间共享程序集。 要将程序集包含在全局程序集缓存中,必须对程序集进行强命名。
有关更多信息,请参见具有强名称的程序集。
程序集仅在需要时才加载到内存中。 可以使用反射以编程方式获取关于程序集的信息。
如果加载程序集的目的只是对其进行检查,应使用诸如 ReflectionOnlyLoadFrom 的方法。 可以在单个应用程序中使用相同程序集的两个版本
OK,编写以下代码
ChangeStyle
编译PluginToChangeStyle项目,将PluginToChangeStyle.dll拷贝Notepad的Addins文件夹下.
再次运行Notepad时,我们编写的改变字体字号插件已经OK,并且可以正常使用
相关的代码下载:
http://115.com/file/ani80ym1#插件Demo.zip
代码写得很粗糙,主要是方便初学者的理解.主程序在扫描插件的时候,还需要考虑很多因素,也可以使用linq方式来获取.
这个插件还可以应用于MVC,实现补丁式开发.主要原理是将注册视图的代码分离,实现无缝补丁升级模式.
有空再再写.
程序集:所有.Net类都是定义在某个Assembly(程序集)中的,.Net基本类是定义在mscorlib.dll中。exe也可以看做是类库,也可以引用。.net的exe也是Assembly,
.net中的exe和dll的区别就是exe中包含入口函数,其他没有区别,exe也可以当成dll那样引用、也可以反编译。
GAC:全局程序集缓存。公用的Assembly放到GAC中,我们新建一个项目,会发现引用的程序集,如system,找不到这个dll放在哪里,实质上系统已注册到全局GAC中
程序集包含描述它们自己的内部版本号和它们包含的所有数据和对象类型的详细信息的元数据。
程序集具有以下特点: 程序集作为 .exe 或 .dll 文件实现。 通过将程序集放在全局程序集缓存中,可在多个应用程序之间共享程序集。 要将程序集包含在全局程序集缓存中,必须对程序集进行强命名。
有关更多信息,请参见具有强名称的程序集。
程序集仅在需要时才加载到内存中。 可以使用反射以编程方式获取关于程序集的信息。
如果加载程序集的目的只是对其进行检查,应使用诸如 ReflectionOnlyLoadFrom 的方法。 可以在单个应用程序中使用相同程序集的两个版本
OK,编写以下代码
ChangeStyle
namespace PluginToChangeStyle { public class ChangeStyle:IEditor { public string Name { get { return "修改字体"; } set { } } private TextBox txtBox; public void Execute(TextBox txt) { txtBox = txt; FrmSetFont frm = new FrmSetFont(); //通过委托方式在两个窗体之间传递内容 frm.setFont = SetTextBoxFont; frm.ShowDialog(); } /// <summary> /// 设置字体、字号 /// </summary> /// <param name="family"></param> /// <param name="size"></param> public void SetTextBoxFont(string family, float size) { txtBox.Font = new System.Drawing.Font(family, size); } } }
编译PluginToChangeStyle项目,将PluginToChangeStyle.dll拷贝Notepad的Addins文件夹下.
再次运行Notepad时,我们编写的改变字体字号插件已经OK,并且可以正常使用
相关的代码下载:
http://115.com/file/ani80ym1#插件Demo.zip
代码写得很粗糙,主要是方便初学者的理解.主程序在扫描插件的时候,还需要考虑很多因素,也可以使用linq方式来获取.
这个插件还可以应用于MVC,实现补丁式开发.主要原理是将注册视图的代码分离,实现无缝补丁升级模式.
有空再再写.
相关文章推荐
- .Net中通过反射技术的应用----插件程序的开发入门
- 【转】.Net中通过反射技术的应用----插件程序的开发入门
- .Net中通过反射技术的应用----插件程序的开发入门
- .Net中通过反射技术的应用----插件程序的开发入门
- 一起谈.NET技术,MSDN Webcast:ASP.NET MVC2程序开发入门到精通系列课程
- .net反射技术的应用—如何调用Java的COM接口
- Postman chrome浏览器插件下载地址和安装方式,解决“只能通过Chrome网上应用商店安装该程序”的方法
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
- 对标小程序 ? "快应用"开发入门指南 [ 转载 ]
- MS IDE RAD技术入门----VC6插件开发入门(4)----安装插件
- 应用反射技术为Infragistics Solution设计例子程序 代码简洁而且学习的效率高
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
- 一起谈.NET技术,使用DeeepZoom Composer进行富图像应用的开发(翻译--2)
- 微软MSDN给出的使用.Net开发Windows Form网络应用相关程序的优化建议
- .net开发分布式程序技术大全(转)
- 应用反射技术为Infragistics Solution设计例子程序 代码简洁而且学习的效率高
- MS IDE RAD技术入门----VC6插件开发介绍
- 一起谈.NET技术,Silverlight 游戏开发小技巧:透明背景的Silverlight程序
- J2ME技术入门之一——J2ME程序的开发过程
- zz--WINCE TCPMP应用四:利用TCPMP插件开发程序