Нет, это невозможно сделать. Не ясно, является ли MyClass
именем класса (а Property1
является статическим свойством) или это свойство экземпляра, а MyClass.Property1
просто не является допустимым доступом к члену. Если это последнее, вы, вероятно, захотите изменить свой метод на что-то вроде:
public static string GetPropertyName<TSource, TResult>(
Expression<Func<TSource, TResult>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}
и назовите его так:
string propertyName = GetPropertyName<MyClass, string>(x => x.Property1);
Или вы можете использовать универсальный класс с универсальным методом, чтобы можно было вывести string
:
string propertyName = PropertyUtil<MyClass>.GetPropertyName(x => x.Property1);
Это было бы что-то вроде:
public static class PropertyUtil<TSource>
{
public static string GetPropertyName<TResult>(
Expression<Func<TSource, TResult>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}
}