2012-04-12 10 views
6

Estoy usando Type.GetType() para crear una instancia.Type.GetType() cadena dinámica return nulo

Esto funciona:

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

embargo, este trabajo Indiferente. Devuelve null:

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

GetType no crea una instancia, sino que devuelve un objeto Type que representa el tipo especificado. En cuanto a null, ¿está seguro de que se puede encontrar el ensamblado y está cargado y el espacio de nombres es correcto? – Lloyd

+4

Intenté esto en .NET 4 y no tuve problemas. Así que revisa el código de errores tipográficos. – Jetti

+2

¿Estás seguro de que no tienes ningún error tipográfico en el caso 2-nd? Supongo que se calcula el valor de la variable 'name', ¿está seguro de que esto se hace correctamente (por cierto, la carcasa importa)? –

Respuesta

5

No-repro. Ejecutar este ejemplo:

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

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

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

De Type.GetType() en MSDN:

Obtiene el tipo con el nombre especificado, realizando una búsqueda entre mayúsculas y minúsculas.

Basado en eso y mi ejemplo anterior, creo que es más probable que el valor de name no coincide con el nombre de la clase a la perfección.