打印类的属性

时间:2015-12-15 15:53:31

标签: c# c#-4.0 json.net .net-4.5

我有一个小程序控制台程序打印出给定类的属性。

它有效,但我想知道是否有一种方法可以做到这一点,而无需实例化新类。

我问,因为我想获得项目中每个类的类名和所有类属性。

如果我可以在不必实例化每个类的情况下做到这一点,那么它将真正减少编程。

namespace ObjectViewer
{
    class PropertyLister
    {
        static void Main(string[] args)
        {
            Programmer programmer = new Programmer() { Id = 123, Name = "Joe", Job = "Programmer" };

            printProperties(programmer);

            Console.ReadLine();
        }

        public static void printProperties(Object jsonObject)
        {
            JObject json = JObject.FromObject(jsonObject);
            Console.WriteLine("Classname: {0}\n", jsonObject.ToString());
            Console.WriteLine("{0,-20} {1,5}\n", "Name", "Value");
            foreach (JProperty property in json.Properties()) { 
                Console.WriteLine("{0,-20} {1,5:N1}",  property.Name, property.Value);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您可以使用反射:

class ClassA
{
    public string NameField;

    public string NameProperty { get; set; }
}

public class Program
{
    public static void Main()
    {
        Type t = typeof(ClassA);

        foreach(var field in t.GetFields())
        {
            Console.WriteLine(field.Name);
        }

        foreach(var prop in t.GetProperties())
        {
            Console.WriteLine(prop.Name);
        }
    }
}

这将输出:

NameField
NameProperty

答案 1 :(得分:0)

对于给定类型,您可以使用.GetProperties()方法获取类型的所有属性。