2008-12-17 6 views
13

Estoy intentando usar Assembly.GetType ("MyCompany.Class1.Class2") para obtener dinámicamente un tipo de una cadena.El uso de Assembly.GetType ("MyCompany.Class1.Class2") devuelve nulo

Assembly.GetType("MyCompany.Class1"); 

funciona como esperaba.

Si lo integrar una clase dentro de otra clase, tales como:

namespace MyCompany 
{ 
    public class Class1 
    { 
    //..... 
    public class Class2 
    { 
     //..... 
    } 
    } 
} 

y tratar de obtener el tipo de clase 2

Assembly.GetType("MyCompany.Class1.Class2") 

devolverá un valor nulo.

estoy usando el .NET 3.5 SP1 marcos

¿Alguien sabe lo que estoy haciendo mal y lo que puedo hacer para solucionar este problema?

Gracias de antemano

Kevin D. Lobo Tampa, FL

Respuesta

18

Necesita el signo más para conseguir clases anidadas a ser asignadas mediante Assembly.GeType.

Assembly.GetType("MyCompany.Class1+Class2"); 
+1

Estás cerca. Necesita "MyCompany.Class1 + Class2". –

+0

Sí, lo noté, gracias! – CMS

+0

Si el ensamblaje no está cargado en la memoria, debe tener el nombre de tipo completo. GetType ("MyCompany.Class1 + Class2, MyAssembly"); – Hallgrim

5

Creo que se llama MyComnpany.Class1 + Class2.

Si me quedo este código en una estructura similar, que es lo que veo:

Assembly assem = Assembly.GetExecutingAssembly(); 
Type[] types = assem.GetTypes(); 

ejemplo, tipos para ver los nombres.

4

Debe usar los signos más. Algo así como "MyAssembly.Class1 + NestedClass".

Cuestiones relacionadas