he utilizado un método de ayuda que se buscan todos los cargado Assembly s para un Type que coincida con el nombre especificado. Aunque en mi código solo se esperaba un resultado de tipo, admite múltiples. Verifico que solo se devuelve un resultado cada vez que lo uso y sugiero que haga lo mismo.
/// <summary>
/// Gets a all Type instances matching the specified class name with just non-namespace qualified class name.
/// </summary>
/// <param name="className">Name of the class sought.</param>
/// <returns>Types that have the class name specified. They may not be in the same namespace.</returns>
public static Type[] getTypeByName(string className)
{
List<Type> returnVal = new List<Type>();
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
Type[] assemblyTypes = a.GetTypes();
for (int j = 0; j < assemblyTypes.Length; j++)
{
if (assemblyTypes[j].Name == className)
{
returnVal.Add(assemblyTypes[j]);
}
}
}
return returnVal.ToArray();
}
¿Se da cuenta de que podría tener múltiples clases diferentes llamadas TheClass en un proyecto donde se han agregado muchas referencias y el archivo donde intenta resolver el tipo tiene muchas instrucciones de uso? Debe pasar el nombre totalmente calificado, incluido el espacio de nombres, como cuando se hace referencia en un documento en el que escribe Nombre y Apellido. ¿Cuál de las muchas clases de TheClass debería usar el compilador en caso de que haya muchos presentes? Namespace dice cuál. –
Lanzaría 'ArgumentException' en lugar de solo devolver' null'. No se puede distinguir sin 'Namespace' – gdoron
posible duplicado de [Obtención de un System.Type del nombre parcial del tipo] (http://stackoverflow.com/questions/179102/getting-a-system-type-from-types-partial -name) – nawfal