属性名称并需要其值
我有一个属性的名称,需要在一个类中找到它的值,获得这个值的最快方法是什么?
我假设你在运行时拥有属性的名称; 不是在编码时……
假设您的类名为TheClass,它有一个名为TheProperty的属性:
object GetThePropertyValue(object instance) { Type type = instance.GetType(); PropertyInfo propertyInfo = type.GetProperty("TheProperty"); return propertyInfo.GetValue(instance, null); }
我假设你的意思是你将属性的名称作为字符串。 在这种情况下,您需要使用一些reflection来获取属性值。 在下面的示例中,包含该属性的对象称为obj
。
var prop = obj.GetType().GetProperty("PropertyName"); var propValue = prop.GetValue(obj, null);
希望有所帮助。
如果您对运行时的速度感兴趣而不是开发速度,请查看Jon Skeet的“ 制作反思”并探索代表博客文章。
只需使用该属性的名称。 如果它是可空属性(例如int?property),则使用property.Value。
在运行时,您可以使用reflection来获取属性的值。
两个警告:
-
混淆:混淆器可能会更改属性的名称,这将破坏此function。
-
重构:以这种方式使用reflection会使代码更难以重构。 如果更改属性的名称,则可能必须搜索使用reflection的实例,以根据名称获取属性值。