如果我在运行时不知道属性名称,如何返回属性的值?

时间:2011-06-09 14:28:53

标签: c# reflection

为简单起见,我们假设属性的值需要始终作为字符串返回。

public string GetTheValueOfTheProperty(PropertyInfo propertyInfo,Object myObject){
       string propname = propertyInfo.Name;
       if (propName == "IsSelected"){
          return myObject.IsSelected.ToString();
       }
    //...
}

这有效,但如果我不知道该属性的名称,它就不起作用。在那种情况下我该怎么做?

2 个答案:

答案 0 :(得分:5)

http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.getvalue.aspx

您可以拨打propertyInfo.GetValue(myObject, null);

您可以使用string转换为ToString(),但您应首先检查null值 - 否则您将获得NullReferenceException

答案 1 :(得分:0)

PropertyInfo对象允许您调用对象上的属性:

object value = propertyInfo.GetGetMethod().Invoke(myObject, new object[] { });