Ok. Таким образом, у меня есть код, который сопоставляет определенные элементы управления winForm определенным свойствам объекта, чтобы сделать определенные вещи для элементов управления, когда некоторые вещи происходят с данными. Все хорошо и хорошо, отлично работает. Не проблема. Проблема заключается в том, что для добавления элементов к сопоставлению я вызываю функцию, которая выглядит так:
this.AddMapping(this.myControl,myObject,"myObjectPropertyName");
Проблема, с которой я сталкиваюсь, заключается в том, что во время компиляции очень сложно определить разницу между приведенной выше строкой и ниже:
this.AddMapping(this.myControl,myObject,"myObjectPropretyName");
Поскольку последний параметр является строкой, нет проверки времени компиляции или чего-либо подобного, что обеспечило бы выполнение того, что сама строка фактически соответствует допустимому имени свойства для данного объекта. Кроме того, такие вещи, как Refactor и "Find All References", пропускают эту ссылку, что приводит к веселью, когда изменяется имя свойства. Так что мне интересно, если есть какой-то способ изменить функцию, так что то, что я передаю, по-прежнему является строкой, представляющей имя свойства каким-то образом, но с проверкой времени компиляции фактического значения. Кто-то сказал, что я может сделать это с помощью деревьев выражений, но я прочитал их и, похоже, не вижу связи. Я хотел бы сделать что-то вроде:
this.AddMapping(this.myControl,myObject,myObject.myObjectPropertyName);
или даже
this.AddMapping(this.myControl,myObject.myObjectPropertyName);
будет сладким!
Любые идеи?