So che è possibile sovrascrivere il metodo ToString() di un oggetto, in modo che ogni volta che si richiama un oggetto o lo si passi a una funzione che richiede un tipo di stringa verrà convertito in stringa.Conversione di tipo automatico in C#
ho scritto diversi metodi di estensione per il tipo di oggetto 'oggetto'
public static DateTime ToDate(this object date)
{
return DateTime.Parse(date.ToString());
}
public static int ToInteger(this object num)
{
return Int32.Parse(num.ToString());
}
public static long ToLong(this object num)
{
return Int64.Parse(num.ToString());
}
modo che ho potuto solo chiamarli così:
eventObject.Cost = row["cost"].ToString();
eventObject.EventId = row["event_id"].ToLong();
Tuttavia, quello che voglio realizzare è quello di convertire gli oggetti riga di tipo 'oggetto' al tipo corretto in base ai tipi di proprietà sul mio 'eventObject'. Quindi, potrei chiamarlo così:
eventObject.Cost = row["cost"];
eventObject.EventId = row["event_id"];
La riga è un DataRow se questo è importante.
Perché non usi solo la classe di conversione? http://msdn.microsoft.com/en-us/library/system.convert.aspx - E no, non è possibile ottenere la conversione del tipo silenzioso come il tuo ultimo codice, a meno che tu non faccia "riga [x]" restituisca un oggetto personalizzato che sa come eseguire il casting implicito. –
+1 @Lasse L'uso della classe Convert è preferibile per spackling 'Object' con metodi di utilità. –
utilizzerà ora, pensavo che non ci fosse alcuna differenza –