Using MemberExpression to return a property name as a string
16 December 2011
This is a snippet of code I used because I absolutely hate using magic strings in code.
We were using a third party tool (I’m looking at you, NHibernate Events) and it required the property name to be passed as a string. In comes this method!
public static string PropertyName<T>(Expression<Func<T, object>> expression)
{
var body = expression.Body as MemberExpression;
if (body == null)
{
body = ((UnaryExpression)expression.Body).Operand as MemberExpression;
}
return body.Member.Name;
}
If you run it like PropertyName<MyType>(x=> x.MyPropertyName)
then you get back MyPropertyName
as a string.
Yes, I understand that this adds a little bit of complexity to what you’re trying to do. However, we were running code that was constantly being changed and having the property name as a string in a random class had already caused some problems. This seemed like a better option.