Я пришел на этом сайте (http://snipplr.com/view.php?codeview&id=17637), который иллюстрирует использование отражения, как это:C# и использование отражения
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
private void button2_Click_1(object sender, EventArgs e)
{
var person = new Person { Age = 30, Name = "Tony Montana" };
var properties = typeof(Person).GetProperties();
foreach (PropertyInfo property in properties)
{
Console.WriteLine("{0} = {1}", property.Name, property.GetValue(person, null));
}
}
codesnippet выше даст вам: Возраст: 30 Имя: Tony Montana
Что делать, если мы добавили «Малыш» в классе «AnotherPerson» как этот
public class Kid
{
public int KidAge { get; set; }
public string KidName { get; set; }
}
public class AnotherPerson
{
public int Age { get; set; }
public string Name { get; set; }
public Kid Kid { get; set; }
}
Этот фрагмент кода;
private void button3_Click(object sender, EventArgs e)
{
var anotherPerson = new AnotherPerson { Age = 30, Name = "Tony Montana", Kid = new Kid { KidAge = 10, KidName = "SomeName" } };
var properties = typeof(AnotherPerson).GetProperties();
foreach (PropertyInfo property in properties)
{
Console.WriteLine("{0} = {1}", property.Name, property.GetValue(anotherPerson, null));
}
}
дает мне: Возраст: 30 Имя: Tony Montana Kid: ProjectName.Form1 + Kid
Не совсем то, что я искал .... Могу ли я использовать отражение для итерацию корыта " Малыш "тоже? Предложения?
Сделайте то же самое для объекта 'kid' – I4V
Вы действительно заинтересованы в некоторой форме сериализации, например, JSON? http://json.codeplex.com/ –
, вам нужно будет рекурсивно вызвать ваш метод вывода и посмотреть, является ли свойство объектом, я считаю, что этот вопрос делает все: http://stackoverflow.com/questions/6196413/ как-to-recursively-print-the-values-of-the-objects-properties-using-reflection – gordatron