以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Dot NET,C#,ASP,VB 』 (http://bbs.xml.org.cn/list.asp?boardid=43) ---- 如何动态加载控件以及插件编程思想(C#) (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=84652) |
-- 作者:卷积内核 -- 发布时间:5/8/2010 8:28:00 AM -- 如何动态加载控件以及插件编程思想(C#) 控件,在实现快速开发中起着非常重要的作用,它可以将某一特定功能封装起来,供可户程序员调用,更重要的是它还可以实现插件式开发,使软件的灵活性、可扩充性大大增强。在网络上,也有很多动态加载控件、动态调用类成员等的资料。下面,我就将动态加载控件总结一下,以供大家参考。(不过由于本人水平有限,不一定有参考价值,写出来一方面是为了总结自己,以求提高,另一方面也希望各为朋友看到我的不足,给我提出宝贵意见) 一、动态加载控件 动态加载,最基本用到的就是反射机制。在System.Reflection的namespace下有一系列的关于获取Assembly信息、类(型)信息的类、接口、结构等。可能上面的话对急切想实现动态加载控件的朋友来说可能一点用也没有,那么就看下面的代码吧,也许可以使你马上实现你想要的: //加载控件 Assembly assembly = Assembly.LoadFrom (@"C:\Controls.dll"); //获得类(型) Type type = assembly.GetType("Controls.UserControl",false,true); //设置筛选标志 BindingFlags bflags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; //调用构造函数并获得对象 Object obj = type.InvokeMember("UserControl", bflags | BindingFlags.CreateInstance, null, null, null); //将对象转换类型 System.Windows.Forms.Control c = (Control)obj; //将控件添加到窗体 this.Controls.Add(c); 下面对上面程序段用到的一些变量、方法做一点说明 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |