
class Test
{
public static string StaticPer = "StaticPer";
public readonly string ReadOnlyPer = "ReadOnlyPer";
public const string ConstPer = "ConstPer";
public string GetPer { get { return "GetPer"; } }
private string _SetPer;
public string SetPer { set { _SetPer = value; } }
public string GetSetPer { get; set; }
public void Ok()
{
}
}
var obj = new Test();
var type = objGetType();
var p = typeGetProperties(BindingFlagsInstance | BindingFlagsPublic);
foreach (var item in p)
{
ConsoleWriteLine("Name: {0}", itemName);
}
foreach (FieldInfo field in typeGetFields())
{
ConsoleWriteLine("Field: {0}, Value:{1}", fieldName, fieldGetValue(obj));
}
ClassgetDeclaredMethod()
是获取这个类中所有的方法,返回的是Method[]如果有参数,第1个是方法名称,第2个是该方法的所有参数数组,这样返回的是Method这个对象Methodinvoke()
传入调用方法的类,另一个是调用这个方法所需要的参数,如果该方法没有参数,可以不填写,在JDK1,4之前,第2个参数是传入一个数组的,但是在jdk15之后,可以不传数组,多个参数用逗号隔开
不知道你听明白没
import javalangreflectConstructor;
import javalangreflectMethod;
public class ReflectDemo {
public static void main(String[] args) throws Exception {
// 获取字节码文件对象
Class c = ClassforName("cnitcast_01Person");
// 获取所有的方法
// Method[] methods = cgetMethods(); // 获取自己的包括父亲的公共方法
// Method[] methods = cgetDeclaredMethods(); // 获取自己的所有的方法
// for (Method method : methods) {
// Systemoutprintln(method);
// }
Constructor con = cgetConstructor();
Object obj = connewInstance();
/
Person p = new Person(); pshow();
/
// 获取单个方法并使用
// public void show()
// public Method getMethod(String name,Class<> parameterTypes)
// 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型
Method m1 = cgetMethod("show");
// objm1(); // 错误
// public Object invoke(Object obj,Object args)
// 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数
m1invoke(obj); // 调用obj对象的m1方法
Systemoutprintln("----------");
// public void method(String s)
Method m2 = cgetMethod("method", Stringclass);
m2invoke(obj, "hello");
Systemoutprintln("----------");
// public String getString(String s, int i)
Method m3 = cgetMethod("getString", Stringclass, intclass);
Object objString = m3invoke(obj, "hello", 100);
Systemoutprintln(objString);
// String s = (String)m3invoke(obj, "hello",100);
// Systemoutprintln(s);
Systemoutprintln("----------");
// private void function()
Method m4 = cgetDeclaredMethod("function");
m4setAccessible(true);
m4invoke(obj);
}
}
以上就是关于c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢比如说一个const类型的常量:con全部的内容,包括:c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢比如说一个const类型的常量:con、Java反射机制获取set()方法 并且为set()方法传值、Java如何接收使用反射执行方法所返回的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)