首页 > 代码库 > 在反射中Member{get{..}set{..}}与Member{get;set;}的区别?
在反射中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方法……
呃……这下彻底不明了……
在反射中Member{get{..}set{..}}与Member{get;set;}的区别?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。