关于C#反射的 实例讲解。
我自己的理解,说的不好别见笑using sendkey;
public key kk = new key();
int pid=0,jbid=0;
pid = kk.pid("su_client.exe");
label1.Text +="="+ pid.ToString(); //返回一个指定程序的PID
jbid = kk.findwin(txtname.Text);
pid = kk.pid(jbid);
label2.Text += "=" + pid.ToString();
以上 是一个类 通过引用正常 调用的例子,大家都能理解。
System.Reflection.Assembly asm = Assembly.LoadFile(@"E:\模拟键盘外挂\模拟键盘\测试\bin\Debug\sendkey.dll");
//获取类型
Type t = asm.GetType("sendkey.key");
//获取没有参数的构造函数
System.Reflection.ConstructorInfo conn = t.GetConstructor(new Type[0]);
//调用没有参数的构造函数,Invoke返回object它其是a类
object a1 = conn.Invoke(new object[0]);
//获取参数类型为int,函数名为func的方法
MethodInfo method = t.GetMethod("pid", new Type[] { typeof(String) });
//在a1上调用func方法,参数为1
label1.Text=method.Invoke(a1, new object[] { "QQ.exe" }).ToString(); //返回一个指定程序的PID
如果用反射就是以上的例子
通过例子我们可以发现,一般的调用方法,是静态的事先约定好的,通过项目的引用声明等等,而通过反射
我们可以动态的加载DLL组件,通过这种功能我们可以 延伸出很多很酷的功能,呵呵
网上好像有一个 打造自己的脚本语言的例子,大家可以充分的想象用处,我也是才理解的,希望高手能指点一二