c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:con
c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:conststringaa=123,我现在在另外一个类里面要动态的根据常量名a...
c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:const string aa=123,我现在在另外一个类里面要动态的根据常量名aa去取它的值,能取么? const可能不行,因为是编译时常量, 那么readonly定义的静态常量应该可以吧? 那应该怎么做呢? 说白了就是,怎么反射一个静态的类级常量属性?先谢谢各位大神了!
展开
展开全部
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 = 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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询