Ну, я не одинок, кому надоели волшебные струны, которые постоянно используются только для привязки данных - см .:
Как сделать тип привязки данных безопасным и поддерживать рефакторинг
Однако я обеспокоен производительностью этого решения и намного большим набором текста - каждый раз, когда вы хотите использовать имя, вы должны вводить лямбду. Поэтому я думаю о более грубом методе - написании имени функции и внешней программы, которые изменят каждый файл .cs перед его компиляцией.
public string nameof<T>(T obj,string name = null)
{
return name;
}
Вы бы использовали это таким образом
nameof(the_object.MyProperty);
Ключ находится во внешней программе, помогающей nameof - он будет искать любой вызов nameof и просто заменяет
nameof(X.Y.Z)
или
nameof(X.Y.Z,"s")
в
nameof(X.Y.Z,"Z")
Мой вопрос - какие ограничения, подводные камни такого подхода вы видите? Или, может быть .Net 5.0 со встроенным nameof будет выпущен на следующей неделе, так что нет смысла начинать писать программу для него? ; -)
Заранее благодарим за ваши мысли, рекомендации и т. Д.