Ok。したがって、データに特定のことが起こったときにコントロールに特定のことを行うために、winFormの特定のコントロールをオブジェクトの特定のプロパティにマップするコードがいくつかあります。すべてうまくいき、うまく機能します。問題ありません。問題は、マッピングにアイテムを追加するために、次のような関数を呼び出すことです。
this.AddMapping(this.myControl,myObject,"myObjectPropertyName");
私が遭遇した問題は、コンパイル時に、上記の行と以下の行の違いを区別するのが非常に難しいことです。
this.AddMapping(this.myControl,myObject,"myObjectPropretyName");
最後のパラメータは文字列であるため、コンパイル時のチェックなど、文字列自体が指定されたオブジェクトの有効なプロパティ名に実際に対応していることを強制するようなものはありません。さらに、リファクタリングや「すべての参照の検索」などは、この種の参照を見逃しているため、プロパティ自体の名前が変更されたときに陽気になります。ですから、私が疑問に思っているのは、渡すものが何らかの方法でプロパティ名を表す文字列になるように関数を変更する方法があるかどうかですが、コンパイル時に実際の値をチェックします。誰かが私に言った式ツリーでこれを行うことができますが、私はそれらを読んだので、接続が表示されないようです。私は次のようなことをしたいです:
this.AddMapping(this.myControl,myObject,myObject.myObjectPropertyName);
あるいは
this.AddMapping(this.myControl,myObject.myObjectPropertyName);
甘いだろう!
何か案は?