Существует также Type.InvokeMember .
public static class ReflectionExt
{
public static object GetAttr(this object obj, string name)
{
Type type = obj.GetType();
BindingFlags flags = BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.GetProperty;
return type.InvokeMember(name, flags, Type.DefaultBinder, obj, null);
}
}
Что может быть использовано как:
object value = ReflectionExt.GetAttr(obj, "PropertyName");
или (в качестве метода расширения):
object value = obj.GetAttr("PropertyName");