Sto cercando di scrivere un metodo come questo:Conosco il typeof (T) ma il compilatore no. Come risolvere?
public static T Test<T>()
{
if (typeof(T)==typeof(string))
return "1241";
// do something else
}
ma io non riesco a capire come tirare fuori. Voglio restituire valori in base al tipo di T con cui è stato invocato il metodo. Devo restituire stringhe, int, classi personalizzate, elenco, ecc.
L'effettivo caso di utilizzo è un codice di serializzazione personalizzato in cui è essenziale che il codice di deserializzazione conosca il tipo di oggetto che dovrebbe produrre.
Chiarimento: l'esempio di cui sopra dà il seguente errore: Impossibile convertire la stringa di tipo T
La soluzione ideale sarebbe lavorare sui tipi di valore e tipi di riferimento, e non dovrebbe includere un parametro fittizio per la risoluzione di sovraccarico.
Sto iniziando a dubitare se questa soluzione ideale esiste però.
Grazie, Lucas
typeof (T) dovrebbe funzionare. Quale messaggio di errore ha il compilatore? –