我有一个属性的名称,需要在Class中找到它的值,获取此值的最快方法是什么?
答案 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)
在运行时,您可以使用反射来获取属性的值。
两个警告:
混淆:混淆器可能会改变 属性的名称,即 将打破这个功能。
重构:在此使用反射 方式使代码更加困难 重构。如果更改名称 属性,你可能需要 搜索您使用的实例 反射获得属性值 基于名称。