2012-04-12 13 views
6

Sto utilizzando Type.GetType() per creare un'istanza.Type.GetType() stringa dinamica restituita null

Questo funziona:

var type = Type.GetType("Test.ClassServices.HowService, Test"); 

Ma, questo lavoro Indifferente. Restituisce null:

var name = "How"; 
var type = Type.GetType("Test.ClassServices."+name+"Service, Test"); 
+2

GetType non crea un'istanza, restituisce un oggetto Type che rappresenta il tipo specificato. Per quanto riguarda null, sei sicuro che l'assembly possa essere trovato e caricato e lo spazio dei nomi sia corretto? – Lloyd

+4

Ho provato questo in .NET 4 e non ho avuto problemi. Quindi ricontrolla il codice per gli errori di battitura. – Jetti

+2

Sei sicuro di non avere alcun errore di battitura nel secondo caso? Suppongo che il valore della variabile 'name' sia calcolato, sei sicuro che ciò sia fatto correttamente (BTW, l'involucro è importante)? –

risposta

5

No-repro. Eseguire questo esempio:

var hardCodedWorking = Type.GetType("System.String"); 

var stringName = "String"; 
var concatenatedWorking = Type.GetType("System." + stringName); 

var badStringName = "string"; 
var concatenatedNull = Type.GetType("System." + badStringName); 

Da Type.GetType() su MSDN:

Ottiene il tipo con il nome specificato, l'esecuzione di un maiuscole e minuscole ricerca.

Sulla base di questo e del mio esempio sopra, credo sia molto probabile che il valore di name non corrisponda perfettamente al nome della classe.