Sono di fronte a un problema che non so come risolvere e spero che la comunità possa aiutare.Downcasting in C#
Sto scrivendo un app che gestisce gli oggetti "guidare". (Questi sono i lead di vendita). Una parte del mio programma importerà i lead da un file di testo. Ora, il file di testo contiene molti potenziali lead, alcuni dei quali voglio importare e alcuni non lo farò.
Per facilità di programmazione (e l'uso), sto analizzando il file di testo in un elenco <piombo> oggetto, e utilizzando un DataGridView per visualizzare i contatti impostando la proprietà DataSource del DataGridView.
Quello che voglio fare è aggiungere una colonna alla griglia, chiamato "Importa", con una casella di controllo che l'utente può controllare per indicare se ciascun cavo deve essere importato.
Il mio primo pensiero è quello di derivare una classe da piombo:
public Class LeadWithImportCheckbox : Lead
{
bool bImport = false;
public bool Import { get { return bImport;} set { bImport = value;} } }
Tuttavia, il motore di analisi restituisce un elenco di oggetti di piombo. Non riesco a ritrasmettere un lead a un LeadWithImportCheckbox. Questo non funziona:
LeadWithImportCheckbox newLead = (LeadWithImportCheckbox)LeadFromParsingEngine;
Questo è un cast non valido.
L'altra opzione che vedo è quello di creare un costruttore per LeadWithImportCheckbox:
public LeadWithImportCheckbox(Lead newlead)
{
base.Property1 = newlead.Property1;
base.Property2 = newlead.Property2;
....
base.Property_n = newlead.Property_n;
}
Questo è problematico per due ragioni. Uno, l'oggetto Lead ha diverse dozzine di proprietà e scrivere questo costruttore è un PITA.
Ma il peggio, se mai cambiare la struttura di base di piombo, ho bisogno di ricordare a tornare indietro e cambiare questo costruttore per LeadWithImportCheckbox. Questo è un pericolo per la manutenzione del mio codice.
Esiste un modo migliore per raggiungere il mio obiettivo?
Solo un pensiero casuale: è possibile che si desideri monitorare se un lead è stato "importato" o meno (immesso manualmente)? In altre parole, potrebbe essere fattibile per "importare" una proprietà permanente di "Piombo"? – Adrien
Non penso che sarebbe qualcosa che vorrei tracciare. Vedo i problemi che questo risolverebbe ma in realtà non fa parte di ciò che voglio veramente realizzare. –