使用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属性。