c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢比如说一个const类型的常量:con

c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢比如说一个const类型的常量:con,第1张

 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如何接收使用反射执行方法所返回的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9675038.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存