有没有一种方法可以根据一个对象的名字来获取它的属性值?
例如,如果我有:
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;
}
8条答案
按热度按时间xoefb8l81#
wqnecbli2#
你得用反射
如果你真的想做得更好,你可以把它变成一个扩展方法:
然后:
lrpiutwd3#
你想要反思
plicqrtu4#
扩展Adam Rackis的答案-我们可以简单地像这样使扩展方法通用:
如果愿意,您也可以围绕它进行一些错误处理。
f0brbegy5#
此外,其他人回答说,它很容易获得 * 任何对象 * 的属性值使用扩展方法,如:
用法为:
ijxebb2r6#
简单示例(无需在客户端中编写反射硬代码)
csga3l587#
为了避免反射,您可以将属性名设置为字典值部分中的键和函数,这些键和函数从您请求的属性返回相应的值。
gr8qqesn8#
2个非常短的选项,1个在失败时使用默认值: