反射----重载的方法
在一个类中有这样的方法重载
private string PrintString()
{
return "";
}
private string PrintString(string str)
{
return "str";
}
private string PrintString(string str1, string str2)
{
return str1+str2;
}
当这个类生成在一个dll中后 如何实现对这三个方法的发射呢? 注意都是私有的
private string PrintString()
{
return "";
}
private string PrintString(string str)
{
return "str";
}
private string PrintString(string str1, string str2)
{
return str1+str2;
}
当这个类生成在一个dll中后 如何实现对这三个方法的发射呢? 注意都是私有的
Type t = typeof(你的类);
MethodInfo m0 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { }, null);
MethodInfo m1 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(string) }, null);
MethodInfo m2 = t.GetMethod("PrintString", BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(string), typeof(string) }, null);
BindingFlags.Instance 或 BindingFlags.Static必须指定其一,以确定你要的是否是静态方法.
BindingFlags.Instance ,反射的时候会去实例成员,也就是非静态的,你的3个方法都是非静态的,所以必须加上这个才行。
BindingFlags.Static ,要反射静态的方法就必须加上这个。
摘自:http://hi.baidu.com/motiansen/blog/item/385faeb107f01d530823020f.html