How do you get the Value of a property from PropertyInfo?

孤者浪人 提交于 2019-12-01 02:47:15

Unless the property is static, it is not enough to get a PropertyInfo object to get a value of a property. When you write "plain" C# and you need to get a value of some property, say, MyProperty, you write this:

var val = obj.MyProperty;

You supply two things - the property name (i.e. what to get) and the object (i.e. from where to get it).

PropertyInfo represents the "what". You need to specify "from where" separately. When you call

var val = info.GetValue(obj);

you pass the "from where" to the PropertyInfo, letting it extract the value of the property from the object for you.

Note: prior to .NET 4.5 you need to pass null as a second argument:

var val = info.GetValue(obj, null);

If the name of the property is changing, you should use GetValue:

info.GetValue(attr, null);

The last attribute of that method can be null, since it is the index value, and that is only needed when accessing arrays, like Value[1,2].

If you know the name of the attribute on beforehand, you could use the dynamic behavior of it: you can call the property without the need of doing reflection yourself:

var x = attr.Guid;

try with:

attrGuid = (Guid)info.GetValue(attr,null)

Use PropertyInfo.GetValue(). Assuming your property has the type Guid? then this should work:

attrGuid = ((System.Guid?)info.GetValue(attr, null)).Value;

Note that an exception will be thrown if the property value is null.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!