#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 или список атрибутов).