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

c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:conststringaa=123,我现在在另外一个类里面要动态的根据常量名a... c#中的静态变量,怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:const string aa=123,我现在在另外一个类里面要动态的根据常量名aa去取它的值,能取么? const可能不行,因为是编译时常量, 那么readonly定义的静态常量应该可以吧? 那应该怎么做呢? 说白了就是,怎么反射一个静态的类级常量属性?先谢谢各位大神了! 展开
 我来答
slam2012
2015-06-11 · 超过11用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:11.9万
展开全部
 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);
百度网友ce7f3ccb4
2015-06-11 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1910万
展开全部
都是静态类了,里面的属性值基本都定了,反射它有什么意义
更多追问追答
追问
晕,因为我取值用的属性名是动态的,不是代码里面写死了取什么名字的属性值!
追答
一般的静态的,只有一个对象,不会出现多个对象,在使用过程中,直接用类名来调用就是了,没必要去反射了!!除非你的对象是非静态的,每次用的时候都要去new,那么可能出现不不同的对象了,这个反射才会有意义的!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式