Reputation: 906
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?
Upvotes: 5
Views: 4606
Reputation: 151720
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
object
inGetValue()
's case] allocates an object instance on the heap and copies the value into the new object.
Upvotes: 4
Reputation: 11238
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.
Upvotes: 2
Reputation: 81313
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.
Upvotes: 2