Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > вывод свойств объекта


Автор: blackbanny 10.9.2013, 12:52
Доброго времени суток!

Есть способ вывести значения всех свойств объекта, т.е. есть класс:

Код

class MyClass {
    public string str1 = "str1";
    public string str2 = "str2";
    //...
    public string strN = "strN";
}


после создания объекта 
Код

MyClass obj = new MyClass()


нужно вывести значения всех его полей... можно конечно самому писать 
Код

Console.WriteLine(obj.str1 + " " + obj.str2 + " " + и т.д.);


а как можно это сделать не перебирая вручную?

Автор: jonie 10.9.2013, 14:15
Код

using System.IO;
using System;
using System.Linq;

class Program
{
    public int f1 = 42;
    public string f2 = "hi";
    
    static void Main()
    {
       var target = new Program();
       var targetType = target.GetType();
       var fields = targetType.GetFields().Where(f => f.IsPublic).ToList();
       foreach(var f in fields){
           var value = f.GetValue(target);
           Console.WriteLine("{0} value {1}", f.Name, value);
       }
    }
}


Автор: blackbanny 19.9.2013, 11:42
jonie, спасибо) буду проверять)

Автор: gambit 7.10.2013, 17:16
blackbanny, Джони сказал конкретное решение. Вообще механизм называется рефлексия, посмотри на него шире, у него есть плюсы и большие минусы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)