码迷,mamicode.com
首页 > 其他好文 > 详细

在反射中Member{get{..}set{..}}与Member{get;set;}的区别?

时间:2015-02-02 09:25:43      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

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

 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方法……

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

在反射中Member{get{..}set{..}}与Member{get;set;}的区别?

标签:

原文地址:http://www.cnblogs.com/hailan/p/4266762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!