Extraindo nomes de propriedades para reflexão, com verificação Intellisense e tempo de compilação

Está bem. Então, eu tenho algum código que mapeia certos controles em um winForm para determinadas propriedades em um objeto, para fazer certas coisas nos controles quando certas coisas acontecem com os dados. Tudo bem e bem, funciona bem. Não é o problema. O problema é que, para adicionar itens ao mapeamento, chamo uma função que se parece com:

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

O problema que encontro é que é muito difícil dizer, em tempo de compilação, a diferença entre a linha acima e a abaixo:

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

Desde que o último parâmetro é uma string, não há verificação do tempo de compilação ou algo parecido; isso exigiria que a própria string realmente correspondesse a um nome de propriedade válido no objeto especificado. Além disso, coisas como Refatorar e "Localizar todas as referências" perdem esse tipo de referência, resultando em hilaridade quando o nome da propriedade em si é alterado. Então, o que eu quero saber é se existe alguma maneira de alterar a função, de modo que o que estou passando ainda seja uma string que represente o nome da propriedade de alguma forma, mas com a verificação em tempo de compilação do valor real entrando. Alguém disse que eu poderia fazer isso com as Expression Trees, mas eu as li e não consigo ver a conexão. Eu adoraria fazer algo como:

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

ou mesmo

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

seria doce!

Alguma ideia

questionAnswers(5)

yourAnswerToTheQuestion