Динамический синтаксический анализ значений и атрибутов через вложенные классы

#c# #linq #parsing #class #reflection

#c# #linq #синтаксический анализ #класс #отражение

Вопрос:

У меня есть несколько моделей, которые включают вложенные классы и списки. У многих членов класса есть атрибуты, которые я также должен прочитать.

Я ищу динамический способ (возможно, через Linq или отражение) для извлечения значений и атрибутов всех универсальных объектов в указанной модели.

Любые предложения приветствуются.

Редактировать:

Используя ObjectManager в соответствии с предложением x0r, я могу видеть все данные. Оставшаяся часть этой проблемы требует аннотации элемента. Есть ли какой-нибудь способ скопировать PropertyInfo каждого члена класса?

 ObjectWalker objectWalker = new ObjectWalker(objectToValidate);

foreach (Object o in objectWalker)
{
    if (isGeneric(o.GetType()))
    {    
        PropertyInfo property = o.GetType().GetProperty(o); // <-- This does not work... Need to obtain annotations somehow
        object[] Attributes = property.GetCustomAttributes(typeof(Attribute), true);

        foreach (Attribute attribute in Attributes)
        {
            // Annotations processing goes here
        }
    }
}
  

Ответ №1:

Взгляните на ObjectWalker

Это помогает вам анализировать граф объектов и просматривать все уникальные элементы. Как вы можете видеть, он хранит только стек объектов, а Current возвращает объект.

Вы могли бы изменить это, чтобы программа Walker сохраняла класс, содержащий все необходимые данные для каждого свойства (например, объект propertyinfo или список атрибутов).