C#开发之反射的简单使用
来源:互联网 发布:360抢票软件 编辑:程序博客网 时间:2024/06/05 20:28
以前在Windows Mobile中写过一个写好的Dll中的图片的例子,现在在项目中有接触到在一个大的窗体中,动态的加载一些窗体这样的需求。将功能按照模块的划分进行单独开发成单独的Dll,主框架根据需要动态加载不同的Dll来加载不同的窗体来满足不同的需求。
1.以下是一个简单的例子,有一个按钮点击事件,点击事件实现加载已知的Dll中的窗体。
private void button1_Click(object sender, EventArgs e) { //点击加载DLL中的窗体Form4 string dllName = "ClassLibrary1.dll"; string formName = "ClassLibrary1.Form4"; Form ff = null;//加载Dll Assembly MyAssembly = Assembly.LoadFrom(dllName); //获得Dll中的所有类、成员Type[] types = MyAssembly.GetTypes(); Type type = null;//遍历出需要的成员(窗体) foreach(Type t in types) { if(t.FullName == formName) { type = t; break; } }//对窗体进行实例化 ff = (Form)Activator.CreateInstance(type); ff.Show(); }
----------------------卑鄙的分割线------------------------------
2.反射机制调用Dll中的方法
public string Add(int x, int y) { return x + y + ""; } private void button2_Click(object sender, EventArgs e) {//加载Dll信息string dllName = "ClassLibrary1.dll";string dllNamespace="ClassLibrary1";string className = "Class1";string methodName = "Add";//调用的方法参数object[] parameters = new object[2] { 1, 2 };string message = "";//加载Dll信息Assembly MyAssembly = Assembly.LoadFrom(dllName);Type[] types = MyAssembly.GetTypes();//遍历方法所在的类foreach(Type t in types) {if(t.Namespace == dllNamespace && t.Name == className) {MethodInfo m = t.GetMethod(methodName);if(m != null) {//调用Dll中的方法object o = Activator.CreateInstance(t);message= m.Invoke(o, parameters).ToString();MessageBox.Show(message);} elseMessageBox.Show(" 装载出错 !");}} }
----------------------卑鄙的分割线------------------------------
3.再来一个简单的应用,动态加载本项目下的窗体(貌似用处不大)
private void Form1_Load(object sender, EventArgs e) { //加载本项目下的窗体 Type type = Type.GetType("TabWindow.Form2"); Form ff = (Form)Activator.CreateInstance(type); ff.Show(); }
- C#开发之反射的简单使用
- C#开发之自定义控件的简单使用
- c# 反射的使用
- 使用反射和codeDom实现C#插件开发(3)主程序开发之动态类
- 使用反射和codeDom实现C#插件开发(4)主程序开发之main函数编写
- [教程]C#反射的使用
- 反射使用的简单实例
- 反射机制的简单使用
- Java反射的简单使用
- java反射的简单使用
- Java反射的简单使用
- Java反射的简单使用
- Java反射的简单使用
- C#反射的Assembly的简单应用
- C#反射的Assembly的简单应用
- C#反射的Assembly的简单应用
- 使用C#开发HTTP服务器系列之更简单的实现方式
- C#反射技术的简单操作
- 上机验证一
- 小端模式和大端模式
- taglist安装
- Struts2第一篇:struts的web配置开始
- C++链表类的基本实现
- C#开发之反射的简单使用
- 快速排序算法实现(C版)
- 安装了IIS,asp.net网站打不开
- Dotfuscator 4.9 破解版下载地址
- Java 文档注释
- Windows XP下开机弹出MS-DOS子系统错误
- 【Java】java获取exe文件版本(跨系统版本)
- 响应式web开发所用技术
- DML DDL DML命令的区别