Использование отражения для получения значения вложенного свойства - PullRequest
3 голосов
/ 13 апреля 2011

У меня есть следующий сценарий:

class A
{
   string Foo;
}

Class B
{
   A PropertyA;
}

Class C
{
   B PropertyB;
}

Возможно ли использовать .NET отражение, чтобы получить значение A.Foo, если я начну с объекта C?Проблема, с которой я сталкиваюсь, заключается в следующем: я добираюсь до A через объекты PropertyInfo.Тем не менее, они не хранят информацию об экземпляре вместе с ними.Поэтому я не могу выполнить GetProperty ("Foo"). GetValue (....), поскольку передается только объект типа C.

1 Ответ

4 голосов
/ 13 апреля 2011

Вы должны получить объект, возвращаемый каждым свойством, а затем использовать ту же самую процедуру отражения для этого экземпляра, чтобы получить следующий «уровень» глубины.

Например:

 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...