我有一个小程序控制台程序打印出给定类的属性。
它有效,但我想知道是否有一种方法可以做到这一点,而无需实例化新类。
我问,因为我想获得项目中每个类的类名和所有类属性。
如果我可以在不必实例化每个类的情况下做到这一点,那么它将真正减少编程。
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);
}
}
}
}
答案 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()
方法获取类型的所有属性。