Get string name of property using reflection

If you already have a PropertyInfo, then @dtb’s answer of using PropertyInfo.Name is the right way. If, however, you’re wanting to find out which property’s code you’re currently in, you’ll have to traverse the current call stack to find out which method you’re currently executing and derive the property name from there.

var stackTrace = new StackTrace();
var frames = stackTrace.GetFrames();
var thisFrame = frames[0];
var method = thisFrame.GetMethod();
var methodName = method.Name; // Should be get_* or set_*
var propertyName = method.Name.Substring(4);

If you don’t have a PropertyInfo object, you can get that from a property expression, like this:

public static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)
{
    return (propertyExpression.Body as MemberExpression).Member.Name;
}

To use it, you’d write something like this:

var propertyName = GetPropertyName(
    () => myObject.AProperty); // returns "AProperty"

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)