我想打印所有对象参数及其值,但是下面的代码会引发异常,请你告诉我哪里出错了
foreach (PropertyInfo prop in obj.GetType().GetProperties())
{
Console.WriteLine(prop.Name + " := " + prop.GetValues(obj.Name, null));
}
答案 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()
的第一个参数是“将返回其属性值的对象。”
答案 1 :(得分:0)
GetValue
需要对象和索引,而不是PropertyInfo
,这个代码必须适用于这种情况:
object.Name