1,反射相当于动态编译,
2,反射就是在程序运行时根据元数据来影响程序执行的逻辑;
3, 举例
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:\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
|