c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:con
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:con相关的知识,希望对你有一定的参考价值。
c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:const string aa=123,我现在在另外一个类里面要动态的根据常量名aa去取它的值,能取么? const可能不行,因为是编译时常量, 那么readonly定义的静态常量应该可以吧? 那应该怎么做呢? 说白了就是,怎么反射一个静态的类级常量属性?先谢谢各位大神了!
class Testpublic 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 = obj.GetType();
var p = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
foreach (var item in p)
Console.WriteLine("Name: 0", item.Name);
foreach (FieldInfo field in type.GetFields())
Console.WriteLine("Field: 0, Value:1", field.Name, field.GetValue(obj));
追问
有不循环,直接根据属性名变量一下子取出来的么?
追答using System.Linq;
// 取出 StaticPer 属性的值
var value = type.GetFields().FirstOrDefault(f => f.Name == "StaticPer").GetValue(obj);
Console.WriteLine(value);
晕,因为我取值用的属性名是动态的,不是代码里面写死了取什么名字的属性值!
追答一般的静态的,只有一个对象,不会出现多个对象,在使用过程中,直接用类名来调用就是了,没必要去反射了!!除非你的对象是非静态的,每次用的时候都要去new,那么可能出现不不同的对象了,这个反射才会有意义的!!
追问估计你没碰到这种需求,说了取值的属性名字是动态拼成的。😔
以上是关于c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:con的主要内容,如果未能解决你的问题,请参考以下文章