3

I have the following scenario:

class A
{
   string Foo;
}

Class B
{
   A PropertyA;
}

Class C
{
   B PropertyB;
}

Is it possible using .NET reflection to get the value of A.Foo if I start with object C? The problem I am running into is this: I get to A through PropertyInfo objects. However, they don't have the instance information stored with them. Therefore, I can't do GetProperty("Foo").GetValue(....) since I only have object of type C passed in.

1 Answer 1

4

You have to get the object returned by each property, then use the same reflection procedure on that instance to get the next "level" deep.

For example:

 C instance = GetMyCInstance();

 B propertyB = instance.GetType().GetProperty("PropertyB").GetValue(instance) as B;
 A propertyA = propertyB.GetType().GetProperty("PropertyA").GetValue(propertyB) as A;
 string Foo = propertyA.GetType().GetProperty("Foo").GetValue(propertyA) as string;
Sign up to request clarification or add additional context in comments.

1 Comment

B propertyB = instance.GetType().GetProperty("PropertyB").GetValue(instance, null) as B; is what worked for me, thanks.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.