РЕДАКТИРОВАТЬ: Похоже, их не проще сделать это.Учитывая размер структуры классов, подход foreach кажется самым простым (и, вероятно, лучшим) способом достижения моей цели.Я оставляю вопрос открытым на тот случай, если у кого-то есть блестящая идея.:)
Привет всем,
У меня есть список классов со структурой, подобной этой:
class A
{
...
}
class B
{
...
public List<A> ListOfA {...}
}
class C
{
...
public List<A> ListOfA {...}
public List<B> ListOfB {...}
}
class D
{
...
public List<A> ListOfA {...}
public List<B> ListOfB {...}
public List<C> ListOfC {...}
}
[...]
Мне нужно создать метод всамый внешний класс (в данном случае D), который будет иметь следующую подпись:
public IEnumerable<A> GetListOfA();
Он будет рекурсивно (yield) возвращать список экземпляров A, содержащихся в экземпляре D.
Текущая реализация представляет собой список жестко закодированных foreach.Я хотел бы сделать это немного более гибким, динамически просматривая свойства каждого класса и подкласса.
Просто, чтобы дать вам больше подробностей, структура класса создается из XML-отчета FxCop.Сообщения FxCop могут быть связаны с пространством имен, модулем, типом, членом и т. Д. XML десериализуется в структуру этого класса, и сообщения могут быть найдены на разных уровнях структуры.
Что яхочу достичь - это на самом деле эквивалент XPath //A
по структуре классов.
Не могли бы вы представить, как реализовать такой метод?
Большое спасибо за вашу помощь