2009-04-28 94 views

回答

14

我假设您在运行时拥有该属性的名称;不同时编码...

让我们假设你的类被称为theClass描述,它有一个叫利人属性:

object GetThePropertyValue(object instance) 
{ 
    Type type = instance.GetType(); 
    PropertyInfo propertyInfo = type.GetProperty("TheProperty"); 
    return propertyInfo.GetValue(instance, null); 
} 
+3

你打败了我。请注意,该功能不需要具有特定类型的参数。我相信`对象实例`可以做得很好。 – Noldorin 2009-04-28 15:42:54

0

只需使用该属性的名称。如果它是一个可为空的属性(例如int?属性),请使用property.Value。

+0

反对票不公平,因为问题不够明确。 – fbinder 2009-04-28 16:42:36

0

在运行时,你可以使用反射来获得属性的值。

两个注意事项:

  • 迷惑:一个模糊处理可能会改变 的属性,它 将打破该功能的名称。

  • 重构:以这种 方式使用反射会使代码更难以重构 。如果您更改财产的名称 ,则可能需要 搜索使用 反射的实例,以根据名称获取属性值 。

2

我假设你的意思是你的财产的名称是一个字符串。在这种情况下,您需要使用一点反射来获取属性值。在下面的示例中,包含该属性的对象称为obj

var prop = obj.GetType().GetProperty("PropertyName"); 
var propValue = prop.GetValue(obj, null); 

希望有帮助。