Даункинг в C # - PullRequest
       85

Даункинг в C #

6 голосов
/ 15 июля 2009

Я столкнулся с проблемой, которую не знаю, как решить, и надеюсь, что сообщество может помочь.

Я пишу приложение, которое управляет объектами "Lead".(Это коммерческие предложения.) Одна часть моей программы будет импортировать потенциальных клиентов из текстового файла.Теперь текстовый файл содержит много потенциальных клиентов, некоторые из которых я хочу импортировать, а некоторые - нет.

Для простоты программирования (и использования) я анализирую текстовый файлв объект List и использование DataGridView для отображения интересов путем установки свойства DataSource объекта DataGridView.

Что я хочу сделать, это добавить столбец в сетку, который называется «Импорт» сфлажок, который пользователь может установить, чтобы указать, следует ли импортировать каждый вывод.

Моя первая мысль - извлечь класс из вывода: public Class LeadWithImportCheckbox : Lead { bool bImport = false;</p> <p>public bool Import { get { return bImport;} set { bImport = value;} } }

Однако механизм синтаксического анализа возвращаетсписок ведущих объектов.Я не могу уменьшить LeadWithImportCheckbox.Сбой: LeadWithImportCheckbox newLead = (LeadWithImportCheckbox)LeadFromParsingEngine; Это недопустимое приведение.

Другой вариант, который я вижу, заключается в создании конструктора для LeadWithImportCheckbox:

public LeadWithImportCheckbox(Lead newlead) { base.Property1 = newlead.Property1; base.Property2 = newlead.Property2; .... base.Property_n = newlead.Property_n; } Это проблематично по двум причинам.Во-первых, у объекта Lead есть несколько десятков свойств, и написание этого конструктора - это PITA.

Но что еще хуже, если я когда-нибудь изменю базовую структуру Lead, мне нужно помнить, чтобы вернуться и изменить этот конструктор для LeadWithImportCheckbox.Это опасно для обслуживания моего кода.

Есть ли лучший способ достичь моей цели?

Ответы [ 11 ]

0 голосов
/ 15 июля 2009

Как быстрое и грязное решение, вы можете создать свой объект 'флажок' как другой объект, который содержит экземпляр Lead.

public GridLead {
   public bool Import { get; set; }
   public Lead Lead { get; set; }
}

Таким образом, вы можете легко добавить дополнительные свойства 'grid' к этому объекту, сохраняя при этом ссылку на детали Lead без клонирования свойства hardcoding в него.

...