Динамический анализ вложенных классов для значений и атрибутов - PullRequest
0 голосов
/ 09 ноября 2011

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

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

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

Edit:

Используя 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 Ответ

1 голос
/ 09 ноября 2011

Посмотрите на ObjectWalker

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

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

...