The following code works fine for regular types:
public static string GetPropertyName(this Expression<Func<object>> property)
{
MemberExpression member = property.Body as MemberExpression;
PropertyInfo propInfo = member.Member as PropertyInfo;
return propInfo.Name;
}
GetPropertyName(() => obj.MyProperty); //Returns "MyProperty"
However, if you pass it the property from an anonymous type, it throws a null reference exception because the expression body is a UnaryExpression instead of a MemberExpression.
How can I make this function work properly for anonymous types?