原文:http://www.cnblogs.com/chenwei19/archive/2009/02/04/1384034.html

Class1和Form 窗体在同一个命名空间

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace fanshetest1
  5. {
  6. class Class1
  7. {
  8. private string ab="";
  9. public Class1(string aa)
  10. {
  11. a = aa;
  12. }
  13. public int aa(int x,int y)
  14. {
  15. return x+y+x+y;
  16. }
  17. public string bb()
  18. {
  19. return "bb";
  20. }
  21. public static string cc()
  22. {
  23. return "cc";
  24. }
  25. public string AB
  26. {
  27. get
  28. {
  29. return ab;
  30. }
  31. set
  32. {
  33. ab = value;
  34. }
  35. }
  36. public string a;
  37. }
  38. }

Class1和Form 窗体在不同一个命名空间

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace fanshetest1
  5. {
  6. class Class1
  7. {
  8. private string ab="";
  9. public Class1(string aa)
  10. {
  11. a = aa;
  12. }
  13. public int aa(int x,int y)
  14. {
  15. return x+y+x+y;
  16. }
  17. public string bb()
  18. {
  19. return "bb";
  20. }
  21. public static string cc()
  22. {
  23. return "cc";
  24. }
  25. public string AB
  26. {
  27. get
  28. {
  29. return ab;
  30. }
  31. set
  32. {
  33. ab = value;
  34. }
  35. }
  36. public string a;
  37. }
  38. }

下面是如何使用反射操作以上类;

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Reflection;
  9. namespace fanshetest
  10. {
  11. public partial class Form1 : Form
  12. {
  13. System.Reflection.Assembly a;
  14. System.Reflection.Assembly b;
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. a = System.Reflection.Assembly.LoadFrom("Class1.DLL");
  19. }
  20. private void button1_Click(object sender, EventArgs e)
  21. {
  22. gouzaohanshu();
  23.  
  24. }
  25. //没有传参数,返回一个类型;
  26. private void One()
  27. {
  28. //再另建一个项目,在项目中引用上面生成的ClassLibrary1.DLL
  29. System.Type t = a.GetType("Class1.Class1");
  30. //动态生成ClassLibrary1.Class类的实例
  31. Object theObj = System.Activator.CreateInstance(t);
  32. //参数信息,GetSum需要两个string参数
  33. System.Type[] paramTypes = new System.Type[];
  34. paramTypes[] = System.Type.GetType("System.String");
  35. paramTypes[] = System.Type.GetType("System.String");
  36. //System.Reflection.MethodInfo mi = t.GetMethod("aa", paramTypes);
  37. System.Reflection.MethodInfo mi = t.GetMethod("bb");
  38. //参数值
  39. Object[] parameters = new Object[];
  40. parameters[] = ;
  41. parameters[] = ;
  42. Object returnValue = mi.Invoke(theObj, null);
  43. this.textBox1.Text = returnValue.ToString();
  44. }
  45. //没有返回值,调用的是直接执行函数
  46. private void None_void()
  47. {
  48. //再另建一个项目,在项目中引用上面生成的ClassLibrary1.DLL
  49. System.Type t = a.GetType("Class1.Class2");
  50. //动态生成ClassLibrary1.Class类的实例
  51. Object theObj = System.Activator.CreateInstance(t);
  52. //参数信息,GetSum需要两个string参数
  53. System.Type[] paramTypes = new System.Type[];
  54. //此处调用方法,如果有参数只需要在括号的后面加上"," 加上参数的type[]类型的参数
  55. System.Reflection.MethodInfo mi = t.GetMethod("Mes");
  56. Object returnValue = mi.Invoke(theObj, null);
  57. }
  58. //没有返回值,传出参数接收返回值;
  59. private void Two()
  60. {
  61. Type t = a.GetType("Class1.Class1");
  62. Object theObj = Activator.CreateInstance(t);
  63. Type[] types=new Type[];
  64. types[]=Type.GetType("System.Int32");
  65. types[]=Type.GetType("System.Int32");
  66. Object[] obj=new Object[];
  67. obj[]=;
  68. obj[]=;
  69. MethodInfo mi = t.GetMethod("aa",types);
  70. Object returnValue=mi.Invoke(theObj,obj);
  71. this.textBox1.Text = returnValue.ToString();
  72. }
  73. //获取同一个命名空间的反射出值
  74. private void Local()
  75. {
  76. Type t=Type.GetType("fanshetest1.Class1");
  77. //创建一个 实例
  78. Object theObj = Activator.CreateInstance(t);
  79. Type[] types=new Type[];
  80. types[]=Type.GetType("System.Int32");
  81. types[] = Type.GetType("System.Int32");
  82. Object[] obj = new Object[];
  83. obj[] = ;
  84. obj[] = ;
  85. MethodInfo mi = t.GetMethod("aa",types);
  86. Object returnValue = mi.Invoke(theObj,obj);
  87. this.textBox1.Text = returnValue.ToString();
  88. }
  89. //获取出一个属性
  90. private void attribute()
  91. {
  92. a = Assembly.LoadFrom("Class1.dll");
  93. Type t = a.GetType("Class1.Class1");
  94. t = Type.GetType("fanshetest1.Class1");
  95. Object theObj = Activator.CreateInstance(t);
  96. t.GetProperty("AB").SetValue(theObj,"a",null);
  97. this.textBox1.Text = t.GetProperty("AB").GetValue(theObj, null).ToString();
  98. }
  99. //获取出静态的函数;
  100. private void static_()
  101. {
  102. a = System.Reflection.Assembly.LoadFrom("Class1.dll");
  103. Type t = a.GetType("Class1.Class1");
  104. t = Type.GetType("fanshetest1.Class1");
  105. //创建一个实例
  106. Object theObj = Activator.CreateInstance(t);
  107. //创建一个方法的实例
  108. MethodInfo mi = t.GetMethod("cc");
  109. Object returnValue = mi.Invoke(theObj, null);
  110. this.textBox1.Text = returnValue.ToString();
  111. }
  112. //获取出变量;
  113. private void variable()
  114. {
  115. a = Assembly.LoadFrom("Class1.dll");
  116. Type t = a.GetType("Class1.Class1");
  117. t = Type.GetType("fanshetest1.Class1");
  118. Object theObj = Activator.CreateInstance(t);
  119. MethodInfo mi = t.GetMethod("a");
  120. t.GetField("a").SetValue(theObj,"a");
  121. this.textBox1.Text = t.GetField("a").GetValue(theObj).ToString();
  122. }
  123. //获取出私有变量反射值;
  124. private void private_()
  125. {
  126.  
  127. }
  128. //构造函数
  129. private void gouzaohanshu()
  130. {
  131. Type t = a.GetType("Class1.Class1");
  132. t = Type.GetType("fanshetest1.Class1");
  133. //创建构造函数类型
  134. Type[] structure_Type = new Type[];
  135. structure_Type[] = Type.GetType("System.String");
  136. //定义构造函数传参类型
  137. Object[] structure_Obj = new Object[];
  138. structure_Obj[] = "aa";
  139. //创建一个 实例
  140. Object theObj = Activator.CreateInstance(t,structure_Obj);
  141. //MethodInfo structure_Mi = t.GetConstructor(structure_Type);
  142. //MethodInfo structure_Mi = t.GetMethod("Class1", structure_Type);
  143. //structure_Mi.Invoke(theObj, structure_Obj);
  144. MethodInfo mi = t.GetMethod("a");
  145. //t.GetField("a").SetValue(theObj, "a");
  146. this.textBox1.Text = t.GetField("a").GetValue(theObj).ToString();
  147. }
  148. }
  149. }

c# 类的反射实例 (GetType().Invoke().GetMethod().CreateInstance())的更多相关文章

  1. 类的反射实例(servlet的抽取)

    类的反射实例 具体以后我们写的时候不用写BaseServlet,因为各种框架都已经给我们写好了 所以,user对应的servlet的界面长这样:

  2. java反射 实例

    首先介绍几个概念: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反 ...

  3. Java 反射 Method的invoke回调调用任意方法

    Java 反射 Method的invoke回调调用任意方法 @author ixenos 关键子:Method.Field.invoke方法指针/函数指针.回调函数 invoke回调流程示例 0.由C ...

  4. JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践

    JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...

  5. java--分析简单java类与反射的联系

    分析简单java类与反射的联系 web对反射的操作支持 在JSP之中有一种技术--javaBean.而且在jsp里面也配套有相应的操作方式,javaBean的核心在于简单java类,于是下面演示此操作 ...

  6. c# 中反射里的invoke方法的参数

    一个最简单的C#反射实例,首先编写类库如下: namespace ReflectionTest { public class WriteTest { //带参数的公共方法 public void Wr ...

  7. 类的反射_reflex

    JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为j ...

  8. ObjectTools反射实例

    ObjectTools反射实例 package com.shitou.deposit.chinapnr.utils; import org.apache.commons.logging.Log; im ...

  9. JavaSE基础复习---Class类与反射机制

    ---恢复内容开始--- 目录: 1.java.lang.class类 2.Java中的反射机制 3.运行时与编译时概念 1. java.lang.class类 Java程序在运行时,Java运行时系 ...

随机推荐

  1. [转] c# 操作Word

    来自 风过四季天 的原文 c# 操作Word总结 在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想 到网页的信 ...

  2. leetcode720

    public class Solution { public string LongestWord(string[] words) { var maxlist = new List<string ...

  3. ffmpeg最简单的解码保存YUV数据 <转>

    video的raw data一般都是YUV420p的格式,简单的记录下这个格式的细节,如有不对希望大家能指出.   YUV图像通常有两种格式,一种是packet 还有一种是planar    从字面上 ...

  4. kibana-4.6.3-linux-x86_64.tar.gz的安装(图文详解)(升级)

     前期博客 kibana-4.6.3-linux-x86_64.tar.gz的下载(图文详解) 因为,我的机器情况是如下: 1.上传 [hadoop@master app]$ rz [hadoop@m ...

  5. 添加 MyEclipse Persistence Tools 类库

    1).右键点击你的项目,然后选择Properties.2).在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library….3).选择 MyEclipse L ...

  6. Zookeeper使用--开源客户端

    一.ZkClient ZkClient是在Zookeeper原生API接口之上进行了包装,是一个更易用的Zookeeper客户端,其内部还实现了诸如Session超时重连.Watcher反复注册等功能 ...

  7. [C++] CONST 2

    The C++ 'const' Declaration: Why & How The 'const' system is one of the really messy features of ...

  8. 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂

    在开发一个python项目是,需要用到mysql,但是, 安装完mysql-python后import加载模块提示以下错误: ImportError: libmysqlclient_r.so.16: ...

  9. zigbee广播通信原理

    广播:可以理解成,发送模块发出数据,这个网络里的所有节点模块都可以拿到这个数据. 实验:终端模块以广播的形式发送出去,让协调器和路由器模块作为接收器收到数据并显示出来! 协调器模块作为接收模块: 和单 ...

  10. Photo4

    Story: 我手捧玫瑰,一个人,走在桥上.桥下是波澜壮阔的大海,一不小心,我就有失足的危险.海鸟的低鸣在我耳际盘旋着,浪汹涌,仿佛要把我吞噬掉.你也许奇怪,为何我一人手捧玫瑰走在桥上.只因,女骑从来 ...