首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何根据名称获取属性值

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

Stack Overflow用户
提问于 2011-04-01 08:41:30
回答 6查看 202.8K关注 0票数 172

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

例如,如果我有:

代码语言:javascript
复制
public class Car : Vehicle
{
   public string Make { get; set; }
}

代码语言:javascript
复制
var car = new Car { Make="Ford" };

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

代码语言:javascript
复制
public string GetPropertyValue(string propertyName)
{
   return the value of the property;
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-01 08:45:02

代码语言:javascript
复制
return car.GetType().GetProperty(propertyName).GetValue(car, null);
票数 350
EN

Stack Overflow用户

发布于 2011-04-01 08:43:56

你必须使用反射

代码语言:javascript
复制
public object GetPropertyValue(object car, string propertyName)
{
   return car.GetType().GetProperties()
      .Single(pi => pi.Name == propertyName)
      .GetValue(car, null);
}

如果你想让它变得更花哨,你可以把它变成一个扩展方法:

代码语言:javascript
复制
public static object GetPropertyValue(this object car, string propertyName)
{
   return car.GetType().GetProperties()
      .Single(pi => pi.Name == propertyName)
      .GetValue(car, null);
}

然后:

代码语言:javascript
复制
string makeValue = (string)car.GetPropertyValue("Make");
票数 52
EN

Stack Overflow用户

发布于 2011-04-01 08:46:57

你想要反射

代码语言:javascript
复制
Type t = typeof(Car);
PropertyInfo prop = t.GetProperty("Make");
if(null != prop)
return prop.GetValue(this, null);
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5508050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档