Мне просто интересно узнать о практике кодирования данных привязки к выпадающему знаку (или другому объекту, который можно связать). Предположим, я создал объект, и я хочу добавить их в список со списком. Итак, я создаю свой объект и даю ему некоторые свойства.Код привязки и рефакторинга
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» или что-то в этом роде), то привязка combobox будет ломаться. И он все равно будет компилироваться, поэтому никто не заметил бы до загрузки формы с помощью combobox. Кроме того, вы не сможете найти использование этого свойства, используя «Найти ссылки», поскольку это просто строка.
Что люди думают об этом? Как это использовать и по-прежнему поддерживать ваш код?
Вы абсолютно правы. Авто-рефакторинг VS не справится с этим, и если у вас много ComboBox, это может быть немного хлопот. Насколько я знаю, нет отличного способа решить эту проблему ... –
Большой вопрос, ОП. Чтобы опираться на комментарий Адама и ваш пост, кто-нибудь знает, может ли Решарр справиться с таким случаем? – Brian
Почасовая поездка в магазин спиртных напитков, поскольку головоломка - хороший вопрос. – Greg