Type.GetType("namespace.abClassName") devuelve nulo

Resuelto Omu asked hace 15 años • 18 respuestas

Este código:

Type.GetType("namespace.a.b.ClassName")

devolucionesnull .

Tengo en los usos:

using namespace.a.b;

El tipo existe, está en una biblioteca de clases diferente y necesito obtenerlo por su nombre dado como cadena.

Omu avatar Dec 01 '09 16:12 Omu
Aceptado

Type.GetType("namespace.qualified.TypeName")solo funciona cuando el tipo se encuentra en mscorlib.dll o en el ensamblado que se está ejecutando actualmente.

Si ninguna de esas cosas es cierta, necesitará un nombre calificado para ensamblador :

Type.GetType("namespace.qualified.TypeName, Assembly.Name")
DrPizza avatar Dec 01 '2009 09:12 DrPizza

También puede obtener el tipo sin nombre calificado de ensamblado pero también con el nombre de dll, por ejemplo:

Type myClassType = Type.GetType("TypeName,DllName");

Tuve la misma situación y funcionó para mí. Necesitaba un objeto de tipo "DataModel.QueueObject" y tenía una referencia a "DataModel", así que obtuve el tipo de la siguiente manera:

Type type = Type.GetType("DataModel.QueueObject,DataModel");

La segunda cadena después de la coma es el nombre de referencia (nombre dll).

Asaf Pala avatar Jun 24 '2011 08:06 Asaf Pala

Prueba este método.

public static Type GetType(string typeName)
{
    var type = Type.GetType(typeName);
    if (type != null) return type;
    foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
    {
        type = a.GetType(typeName);
        if (type != null)
            return type;
    }
    return null;
}
peyman avatar Aug 04 '2012 18:08 peyman

Si el ensamblado es parte de la compilación de una aplicación ASP.NET, puede usar la clase BuildManager:

using System.Web.Compilation
...
BuildManager.GetType(typeName, false);
LarryBud avatar Dec 05 '2012 18:12 LarryBud