使用reflection获取属性引用
var a = new obj(); var property = a.GetType().GetProperty("DB").GetValue(a,null) as testObject;
这是否意味着变量property
持有对对象a中相同对象的引用,或者是否创建了具有相同值的新testObject?
如果这意味着创建一个新对象,那么我如何使用reflection获得对该属性/支持字段的引用?
property
现在可以引用 DB
属性中的任何内容。
我不确定当你在具有值类型的属性上调用GetValue()
时会发生什么,我想你会得到对原始值的盒装副本的引用,如Boxing和Unboxing(C#编程指南)中所述 :
将值类型[在
GetValue()
的情况下GetValue()
到object
]在堆上分配对象实例并将值复制到新对象中。
变量property
保存对属性DB
存储的相同值的引用。
GetValue(a,null)
返回类型是对象,因此使用as运算符,您可以使用简单类型转换它。
它表示对象的属性DB
的值是对testType
(在PropertyInfo.GetValue
传递对象a
的引用),因此只有一个对象a
并且您的变量引用其DB
属性。