如何根据名称获取属性值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)

是否有一种方法可以根据对象的名称获取其属性值?

例如,如果我有:

public class Car : Vehicle
{
   public string Make { get; set; }
}

var car = new Car { Make="Ford" };

我想要写一个方法,在这里我可以传入属性名,它将返回属性值。

public string GetPropertyValue(string propertyName)
{
   return the value of the property;
}
提问于
用户回答回答于
return car.GetType().GetProperty(propertyName).GetValue(car, null);
用户回答回答于

你得用反射

public object GetPropertyValue(object car, string propertyName)
{
   return car.GetType().GetProperties()
      .Single(pi => pi.Name == propertyName)
      .GetValue(car, null);
}

可以将其作为扩展方法:

public static object GetPropertyValue(this object car, string propertyName)
{
   return car.GetType().GetProperties()
      .Single(pi => pi.Name == propertyName)
      .GetValue(car, null);
}

然后:

string makeValue = (string)car.GetPropertyValue("Make");

扫码关注云+社区