使用反射获取属性引用

时间:2014-01-01 18:21:37

标签: c# reflection

var a = new obj();
var property = a.GetType().GetProperty("DB").GetValue(a,null) as testObject;

这是否意味着变量property保存对对象a中相同对象的引用,或者创建了一个保持相同值的新testObject?

如果这意味着创建一个新对象,那么如何使用反射获得对该属性/支持字段的引用?

3 个答案:

答案 0 :(得分:3)

property现在为<{1}}的{​​{1}}属性中的任何内容提供引用

我不确定当您在具有值类型的属性上调用a时会发生什么,我想您会获得对原始值的盒装副本的引用,如{{3}中所述}:

  

DB的情况下装箱值类型[到GetValue()]在堆上分配一个对象实例并将值复制到新对象中。

答案 1 :(得分:2)

它表示对象DB的属性a的值转换为testType(您在a中传递对象PropertyInfo.GetValue的引用),因此,只有一个对象a,并且您的变量引用其DB属性。

答案 2 :(得分:2)

变量property保存对属性DB中存储的相同值的引用。

GetValue(a,null)返回类型是对象,因此使用as运算符可以简单地类型化它。