对象的属性名称和值

时间:2014-01-31 05:09:34

标签: c# reflection

我想打印所有对象参数及其值,但是下面的代码会引发异常,请你告诉我哪里出错了

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

2 个答案:

答案 0 :(得分:1)

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

例如:

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()的第一个参数是“将返回其属性值的对象。”

Reference

答案 1 :(得分:0)

<{1}} GetValue需要对象和索引,而不是PropertyInfo,这个代码必须适用于这种情况:

object.Name