Sto scrivendo un metodo di estensione molto semplice che tenta di trasmettere oggetti da un tipo all'altro. L'intento di avere questo metodo è molto simile a Int32.TryParse(string, out int)
, che consente all'utente di vedere 1) se la conversione è riuscita, e 2) che cos'è l'oggetto convertito, tutto in una riga.
Poiché questo metodo si occuperà esclusivamente di oggetti classe, è possibile che l'oggetto da cast sia effettivamente nullo. Null può essere lanciato su qualsiasi tipo annullabile (almeno questo è quello che sembra basato sui miei test), quindi tecnicamente il metodo avrebbe sempre avuto successo in quella situazione. D'altra parte, provare a convertire null non ha un grande scopo e di solito è un segno di cose che sono andate storte. Pertanto, la mia domanda è: nel caso in cui l'oggetto fornito sia nullo, dovrei restituire true (il cast è riuscito) o falso (non è riuscito)?
Questo è (più o meno) il metodo in questione:
public static bool TryGetAs<T>(this object obj, out T output) where T : class
{
output = null;
if (obj == null)
return [true or false];
output = obj as T;
return output != null;
}