Я регулярно хочу получить имя свойства экземпляра типа, когда у меня нет экземпляра. В настоящее время для этого я использую следующую внутреннюю функцию, которая интерпретирует параметр Expression[Func[T, object]]
и возвращает имя свойства:
var str = LinqExtensions.NameOf<ClientService>(x => x.EndDate);
// Now str == "EndDate"
Однако кажется позорным не использовать встроенный оператор nameof
.
К сожалению, кажется, что оператору nameof
требуется либо экземпляр, либо ссылка на статические свойства.
Есть ли изящный способ использовать оператор nameof
вместо нашей внутренней функции? Например:
nameof(ClientService.EndDate) // ClientService.EndDate not normally syntactically valid as EndDate is instance member
РЕДАКТИРОВАТЬ
Я был совершенно не прав, описанный синтаксис nameof(ClientService.EndDate)
действительно работает как есть.
class C { public int P { get; } }
-nameof(C.P)
отлично компилируется. - person Eli Arbel   schedule 08.07.2016