Извлечение имен свойств для отражения с проверкой Intellisense и времени компиляции

Хорошо. Итак, у меня есть некоторый код, который отображает определенные элементы управления в winForm на определенные свойства объекта, чтобы выполнять определенные действия с элементами управления, когда определенные вещи происходят с данными. Все хорошо, хорошо работает. Не проблема. Проблема в том, что для добавления элементов в отображение я вызываю функцию, которая выглядит следующим образом:

this.AddMapping(this.myControl,myObject,"myObjectPropertyName");

Проблема, с которой я сталкиваюсь, заключается в том, что во время компиляции очень трудно определить разницу между приведенной выше строкой и приведенной ниже:

this.AddMapping(this.myControl,myObject,"myObjectPropretyName");

Поскольку последний параметр является строкой, здесь нет проверки времени компиляции или чего-либо подобного th, при этом принудительно будет установлено, что сама строка действительно соответствует действительному имени свойства для данного объекта. Кроме того, такие вещи, как Refactor и «Найти все ссылки», упускают такой тип ссылок, что приводит к веселью при изменении имени самого свойства. Так что мне интересно, есть ли какой-нибудь способ изменить функцию так, чтобы то, что я передаю, все еще представляло собой строку, представляющую имя свойства, но с проверкой фактического значения во время компиляции. Кто-то сказал, что я мог бы сделать это с деревьями выражений, но я прочитал их и, похоже, не вижу связи. Я хотел бы сделать что-то вроде:

this.AddMapping(this.myControl,myObject,myObject.myObjectPropertyName);

или даже

this.AddMapping(this.myControl,myObject.myObjectPropertyName);

было бы сладко!

Есть идеи?

Ответы на вопрос(5)

Ваш ответ на вопрос