C# 反射
2021-01-27 18:16
标签:tco hello 私有 ref declared info 创建对象 object 设置 转自 https://segmentfault.com/q/1010000007608935?_ea=1398469 C# 反射 标签:tco hello 私有 ref declared info 创建对象 object 设置 原文地址:https://www.cnblogs.com/enych/p/11922377.html public static void CallPrivateMethod(object instance, string name, params object[] param)
{
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = instance.GetType();
MethodInfo method = type.GetMethod(name, flag);
method.Invoke(instance, param);
}
var request = (HttpWebRequest)WebRequest.Create("https://");
CallPrivateMethod(request, "SetSpecialHeaders", "AAAAAAAA", DateTime.Now.ToString("R"));
//获得字节码文件对象
Class c = Class.forName("reflect.Demo");
//获取到带参数的构造对象
Constructor d = c.getConstructor(int.class);
//通过Class里的newInstance() 创建对象
//Demo d = (Demo)c.newInstance();
Demo dd= (Demo) d.newInstance(1);
//获取到方法的对象
Method m = c.getMethod("print",String.class);
Method m1 = c.getDeclaredMethod("show",int.class);
//调用即可
m.invoke(dd,"hh");
//私有的设置显示即可
m1.setAccessible(true);
m1.invoke(dd, 1);
}
}
class Demo {
public Demo(){}
public Demo(int x) {
}
private void show(int a) {
System.out.println(1111);
}
public void print(String str ){
System.out.println("Hello "+str);
}
}
原文链接:https://blog.csdn.net/qq_35257397/article/details/52746105