属性名称,需要它的值

时间:2009-04-28 15:33:18

标签: c# properties

我有一个属性的名称,需要在Class中找到它的值,获取此值的最快方法是什么?

5 个答案:

答案 0 :(得分:14)

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

假设您的类名为TheClass,它有一个名为TheProperty的属性:

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

答案 1 :(得分:2)

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

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

希望有所帮助。

答案 2 :(得分:1)

如果您对运行时的速度感兴趣而不是开发感,请查看Jon Skeet的Making reflection fly and exploring delegates博文。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

两个警告:

  • 混淆:混淆器可能会改变 属性的名称,即 将打破这个功能。

  • 重构:在此使用反射 方式使代码更加困难 重构。如果更改名称 属性,你可能需要 搜索您使用的实例 反射获得属性值 基于名称。