EDIT: Похоже, что это не простой способ сделать это. Учитывая размер структуры класса, подход 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();
было бы рекурсивно (выход) возвращать список Insta nces of A, содержащихся в экземпляре D.
Текущая реализация представляет собой список жестко запрограммированных foreach. Я бы хотел сделать нечто более гибким, динамически просматривая свойства каждого класса и подкласса.
Чтобы предоставить вам более подробную информацию, структура класса создается из отчета XML FxCop. Сообщения FxCop могут быть связаны с пространством имен, модулем, типом, членом и т. Д. XML десериализуется в эту структуру классов, и сообщения могут быть найдены на разных уровнях структуры.
То, что я хочу достичь, на самом деле эквивалентно XPath //A
над структурой класса.
У вас есть идея о том, как реализовать такой метод?
Большое спасибо за вашу помощь
В вашей отображаемой иерархии нет иерархии ... Это просто куча инкапсулирующих типов. – leppie
Просто реализуйте 'GetListOfA' во всех классах, которые должны это делать. например. в D вы будете называть регулярные 'GetListOfA' и' foreach GetListOfA' во всех списках участников. –
В ООП нет иерархии классов. но он один с точки зрения данных, хотя это не очевидно из-за глупых имен классов. Спасибо за ваш комментарий, я обновлю теги –