Если у вас уже есть PropertyInfo
, то ответ @ dtb будет правильным. Однако, если вы хотите выяснить, в каком коде свойства вы находитесь в данный момент, вам придется просмотреть текущий стек вызовов, чтобы выяснить, какой метод вы выполняете в данный момент, и получить имя свойства оттуда.
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);
Edit:
После вашего разъяснения мне интересно, что вы хотите сделать, это получить имя свойства из свойства выражение . Если это так, вы можете написать такой метод:
public static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}
Чтобы использовать его, вы должны написать что-то вроде этого:
var propertyName = GetPropertyName(
() => myObject.AProperty); // returns "AProperty"