C# 对象的属性名称和值

C# 对象的属性名称和值,c#,reflection,C#,Reflection,我想打印所有的对象参数和它们的值,但是下面的代码引发了异常,你能告诉我哪里出了问题吗 foreach (PropertyInfo prop in obj.GetType().GetProperties()) { Console.WriteLine(prop.Name + " := " + prop.GetValues(obj.Name, null)); } 重要的是要记住,反射信息是关于类型的元数据。您可以在没有实例的情况下检索有关该类型的信息,但

我想打印所有的对象参数和它们的值,但是下面的代码引发了异常,你能告诉我哪里出了问题吗

     foreach (PropertyInfo prop in obj.GetType().GetProperties())
     {
        Console.WriteLine(prop.Name + " := " + prop.GetValues(obj.Name, null));
     }

重要的是要记住,反射信息是关于类型的元数据。您可以在没有实例的情况下检索有关该类型的信息,但检索实例数据需要该类型的实例

例如:

var instance = new Foo();

// no instance needed to get metadata
var propInfos = typeof( Foo ).GetProperties();

foreach( PropertyInfo prop in propInfos )
{
    // instance needed to get an instance value
    Console.WriteLine( prop.Name + " := " + prop.GetValue( instance ) );
}
GetValue()
的第一个参数是“将返回其属性值的对象”


获取
属性信息的值
必需对象和索引,而不是
对象。名称

在这种情况下,此代码必须有效:

foreach (PropertyInfo prop in obj.GetType().GetProperties())
{
   Console.WriteLine(prop.Name + " := " + prop.GetValue(obj, null));
}