データをコンボボックス(または私が推測する他のバインド可能なオブジェクト)にバインドする背後にあるコーディングの実践に興味があります。オブジェクトを作成して、それらをコンボボックスに追加したいとしましょう。そこで、オブジェクトを作成し、いくつかのプロパティを与えます。
public class ObjectForList
{
public string ObjectName { get; set; }
public int ObjectID { get; set; }
public string SomeOtherProperty { get; set; }
public ObjectForList()
{
}
}
次に、それらのリストを作成し、コンボ ボックスのソースとして設定します。
List<ObjectForList> myObjects= new List<ObjectForList> { ...bunch of ObjectForList objects...};
comboBox1.DataSource = myObjects;
comboBox1.DisplayMember = "ObjectName";
comboBox1.ValueMember = "ObjectID";
それが、少なくとも行われることになっていることを私が理解している方法です。ネットで見つけたすべての説明でその実装が見られます。
しかし、表示メンバーと値メンバーを変数名のハードコードされた文字列として持つことは、私には不安に思えます。数年後に誰かが Visual Studio に参加し、ObjectID プロパティを ("MyID" などに) リファクタリングすると、コンボボックスのバインドが壊れます。そして、それはまだコンパイルされるので、コンボボックスを含むフォームをロードするまで誰も気付かないでしょう. 同様に、それは単なる文字列であるため、「Find References」を使用してそのプロパティの使用を見つけることはできません。
人々はこれについてどう思いますか?これをどのように使用し、コードを保守可能に保ちますか?