问题
var a = new obj();
var property = a.GetType().GetProperty("DB").GetValue(a,null) as testObject;
does this mean that the variable property hold a reference to the the same object that i got in object a , or a new testObject was made that holds the same values?
if this means creating a new object, then how can i get the reference to that property/backing field using reflection?
回答1:
property now holds a referece to whatever is in a's DB property.
I'm not sure though what happens when you call GetValue() on a property that has a value type, I suppose you get a reference to a boxed copy of the original value, as explained in Boxing and Unboxing (C# Programming Guide):
Boxing a value type [to
objectinGetValue()'s case] allocates an object instance on the heap and copies the value into the new object.
回答2:
Variable property holds reference to same value stored in property DB.
GetValue(a,null) return type is object so with as operator you are simple type casting it.
回答3:
It means a value of a property DB of your object a cast to testType (you pass a reference to object a in PropertyInfo.GetValue), so there is only one object a and your variable references its DB property.
来源:https://stackoverflow.com/questions/20871744/getting-a-property-reference-using-reflection