У меня есть тип объекта, например:
Class
{
public string Variable {get; set;}
public List<AnotherClass> ListVariable {get; set;}
}
AnotherClass
{
public string Variable {get; set;}
public int IntVariable {get; set;}
}
Я пробовал несколько решений (ObjectDumper
, object.GetProperties
) для вывода всех значений объекта Class
на экран; Проблема заключается в невозможности распечатать List<AnotherClass>
. Вместо всех его элементов я получаю только его свойство count.
Пробные решения:
Как рекурсивно распечатать значения свойства объекта с использованием отражения
Рекурсивное получение свойств и дочерних свойств объекта
Поиск всех свойств и подсвойств объекта
и еще несколько..
РЕДАКТИРОВАТЬ:
Хорошо, как я вижу, я, вероятно, плохо описал проблему. Мне нужно напечатать все свойства объекта и их значения, когда я не знаю тип объекта и его свойства. Перечисленные решения работают нормально, если объект содержит только простые свойства. Проблема возникает, если одним из свойств является List‹>
Я попробовал следующее:
1)
private static void PrintObject(Object dataSource)
{
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(dataSource))
{
string name = descriptor.Name;
object value = descriptor.GetValue(dataSource);
RichTextBox.Text += name + ": " + value + "\n";
PrintObject(control, value);
}
}
Выдает мне результат:
Состояние проверки: выполнено
TextData: System.Collections.Generic.List`1[TextDataField]
Вместимость: 16
Количество: 15
но я ожидал здесь всех 15 значений элементов, а не только количества в списке.
2)
RichTextBox.Text = dataSource.DumpToString();
из http://objectdumper.codeplex.com/
Выдает примерно такой же результат.