zoukankan      html  css  js  c++  java
  • 在反射中Member{get{..}set{..}}与Member{get;set;}的区别?

    最近的在写代码的时候,需要用到反射来获取类中的所有公开属性值,于是写下如下代码:

     StringBuilder sb = new StringBuilder();
     foreach (var f in this.GetType().GetFields())
     {
         sb.AppendLine(string.Format( "{0}={1};", f.Name,         f.GetValue(this)));
     }
     return sb.ToString();        
    

    工作正常,后又在另一处对另外一个类需要获取属性值,于是同样使用了.GetFields();结果……什么都没有得到.....

    尝试改成了.GetProperties()........结果该有的都有了,为何?百思不得其解……明明两个类中都是写的公共属性啊,get,set.....怎么第二个类认为这些都是字段呢?

    后发现,第一个类中,属性都是这样写的:

    privite object _member;
    
    public object Member{
        get{
            return _member;
        }
        set{
            _member=value
        }
    }
    

    而第二个类中则是这样写的:

    public object Member {get;set;}
    

    于是恍然大悟,在反射机制中,第二种写法竟然被认为是属性?

    又拿出reflector利器,结果……第二种写法同样被生成了get和set方法……

    呃……这下彻底不明了……

  • 相关阅读:
    软件的概念
    打开别人Android项目的方法
    软件工程
    数据预处理技术
    机器学习之监督学习
    C语言指针与二维数组
    徐涛政治押题
    求二叉树的宽度
    解决在某些IE浏览器下字符乱码的问题
    mac系统不能使用127.0.0.2的解决方案
  • 原文地址:https://www.cnblogs.com/hailan/p/4266762.html
Copyright © 2011-2022 走看看