Я использую Foolproof library в проекте ASP.Net MVC, и в некоторых случаях мне нужно проверить свойство в классе-члене моей модели, используя атрибуты.Как использовать nameof для получения полного имени свойства в классе в атрибутах C#?
Например, у меня есть класс пользователя, который имеет свойство типа Address, и мне нужно проверить Город в адресе.
Атрибуты должны иметь имя свойства в точечной нотации для моего примера, вы можете сказать «Address.City».
Конечно, это страдает от проблем рефакторинга, если мне нужно изменить либо имена позже (адрес или город)
мне нужно использовать nameof для этой цели, и, конечно, если я использую это так:
nameof(Address.City)
он будет производить только Город.
Мне нужно имяof, потому что оно дает постоянные значения, которые разрешены в атрибутах.
Я нашел, что ссылка говорит, что это возможно, но не так. https://msdn.microsoft.com/en-us/library/dn986596.aspx в разделе примечаний говорится:
Если вам нужно, чтобы получить полное имя, вы можете использовать выражение TYPEOF вместе с nameof.
но я не мог найти нигде, чтобы сообщить, как это сделать.
Помогите пожалуйста? Заранее благодарим за ваше время и усилия.
Проверьте мой ответ. – GregaMohorko
Я очень благодарен за полезное обсуждение. –
«К сожалению, это означает, что нет никакого имени пользователя и получить полное имя для использования в атрибутах». - Это не совсем так - ваш первый пример с цепочкой + ". + будет работать нормально (просто verbose), поскольку выражение преобразуется в константную строку. – Rob