Quello che sembrano essere dopo è eredità, essendo in grado di "store" un'istanza di classe derivata in una variabile del tipo di base in questo modo:
Stream s = new FileStream();
Il fatto che si tratti di un FileStream
sotto il cofano non è perso solo perché si sta puntando ad esso con gli occhiali Stream
.
DateTime
è un struct
, e struct
eredità non è supportata - quindi questo è non possibile.
Un'alternativa è la parola chiave per la explicit
user-defined conversions (sintatticamente cercando come calchi). Ciò ti consente almeno lo scambio tra la tua classe e DateTime
con più zucchero.
http://msdn.microsoft.com/en-us/library/xhbhezf4(v=vs.71).aspx
Questo potrebbe apparire come:
class MyDateTime
{
private DateTime _inner;
public static explicit operator DateTime(MyDateTime mdt)
{
return mdt._inner;
}
}
Si può fare lo stesso con la parola chiave controparte implicit
:
public static implicit operator DateTime(MyDateTime mdt)
{
return mdt._inner;
}
Che poi ti permette di fare il "casting" implicitamente:
DateTime date = new MyDateTime();
Un'altra alternativa è di avvolgere DateTime
con la propria classe di adattatore che utilizza internamente uno DateTime
e quindi ereditare da questa classe per creare MyDateTime
. Quindi, anziché utilizzare DateTime
nella base di codice, si utilizza questa classe di adattatore.
Ho visto cose simili con le classi di stile SmartDateTime
in cui lo DateTime
ha una migliore comprensione dei valori nulli e se è stato impostato.
fonte
2012-04-12 10:18:50
Come descritto, questo è impossibile. Non puoi usare 'Convert.ToDateTime'? Perché deve essere una variabile 'object'? – Random832