Я использую GetMemberName<T>(Expression<Func<T>> member)
для получения имен членов. Если для свойства Foo
не используется модификатор static
, элемент нельзя использовать с этим методом:
Ссылка на объект требуется для нестатического поля, метода или
свойство 'Program.Foo'
Поскольку мой уровень понимания выражений LINQ не такой глубокий, я хотел бы спросить:
Вопрос: Есть ли способ, кроме nameof(Foo)
, получить доступ к члену "эквивалентным" способом? Цель состоит в том, чтобы получить метаданные свойства, такие как имя, а не получить доступ к его значению из экземпляра.
public class Program
{
public /*static*/ int Foo { get; set; }
public static void Main(string[] args)
{
Console.WriteLine(GetMemberName(() => Foo));
}
public static string GetMemberName<T>(Expression<Func<T>> member)
{
return (member.Body as MemberExpression)?.Member.Name;
}
}