解決方法がわからない問題に直面しており、コミュニティが助けてくれることを願っています。
「リード」オブジェクトを管理するアプリを書いています。(これらはセールス リードです。) 私のプログラムの一部では、テキスト ファイルからリードをインポートします。これで、テキスト ファイルには多くの見込み顧客が含まれており、インポートしたいものもあれば、インポートしたくないものもあります。
プログラミング (および使用) を容易にするために、テキスト ファイルを List<Lead> オブジェクトに解析し、DataGridView の DataSource プロパティを設定してリードを表示するために DataGridView を使用しています。
私がやりたいことは、「インポート」と呼ばれる列をグリッドに追加し、ユーザーが各リードをインポートする必要があるかどうかを示すためにチェックできるチェックボックスを追加することです。
私の最初の考えは、Lead からクラスを派生させることです。
public Class LeadWithImportCheckbox : Lead
{
bool bImport = false;
public bool Import
{
get { return bImport;}
set { bImport = value;}
}
}
ただし、解析エンジンは Lead オブジェクトのリストを返します。リードを LeadWithImportCheckbox にダウンキャストできません。これは失敗します:
LeadWithImportCheckbox newLead = (LeadWithImportCheckbox)LeadFromParsingEngine;
これは無効なキャストです。
私が見る他のオプションは、LeadWithImportCheckbox のコンストラクターを作成することです。
public LeadWithImportCheckbox(Lead newlead)
{
base.Property1 = newlead.Property1;
base.Property2 = newlead.Property2;
....
base.Property_n = newlead.Property_n;
}
これには 2 つの理由で問題があります。1 つは、Lead オブジェクトには数十のプロパティがあり、このコンストラクターを記述することは PITA です。
さらに悪いことに、Lead の基になる構造を変更した場合は、LeadWithImportCheckbox のこのコンストラクターを変更することを忘れないでください。これは私のコードのメンテナンスにとって危険です。
私の目標を達成するためのより良い方法はありますか?