Quello che sto facendo è cercare un valore per un campo particolare nella tabella hash. L'oggetto può essere una manciata di tipi primitivi il cui valore è destinato a essere inserito in XML ma esce dalla tabella hash come oggetto. Quindi ho il problema di dover decidere quale sia il tipo, lanciarlo e quindi usare quel tipo di ToString. Sarebbe bello se non avessi bisogno di lanciarlo, ma poi chiamerà ToString sul tipo di oggetto e non sul metodo di contropartita sul tipo effettivo.Un modo pulito per trasmettere a un oggetto il tipo effettivo
Il seguente codice è funzionalmente corretto, ma non mi sento a mio agio. Forse seguire questa via di conforto mi porterà ad essere un purista. Ad ogni modo apprezzerei molto un modo più bello di scrivere questo se esiste.
public string GetColumnValue(string columnName)
{
object value = item[columnName];
if (value == null)
return string.Empty;
if (value.GetType() == typeof(string))
{
return (string)value;
}
else if (value.GetType() == typeof(double))
{
return ((double)value).ToString();
}
...
}
Questo funziona per i tipi di base, ma potrebbe non funzionare bene per i tipi personalizzati - dipende da cosa può essere restituito nella voce [columnName] ... –
Reed, puoi fare un esempio? – spender
Onestamente non pensavo che avrebbe funzionato. Quindi, per amor di discussione, come si può chiamare esplicitamente un'implementazione ToString su un particolare tipo di un albero ereditario? –