属性名称并需要其值

我有一个属性的名称,需要在一个类中找到它的值,获得这个值的最快方法是什么?

我假设你在运行时拥有属性的名称; 不是在编码时……

假设您的类名为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的实例,以根据名称获取属性值。