2008-12-17 6 views
13

J'essaie d'utiliser Assembly.GetType ("MyCompany.Class1.Class2") pour obtenir dynamiquement un type à partir d'une chaîne.L'utilisation de Assembly.GetType ("MyCompany.Class1.Class2") renvoie null

Assembly.GetType("MyCompany.Class1"); 

fonctionne comme prévu.

Si j'intégrer une classe dans une autre classe telle que:

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

et essayer d'obtenir le type Classe2

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

retournera une valeur nulle.

J'utilise le .NET 3.5 SP1 CADRES

Est-ce que quelqu'un sait ce que je fais mal et ce que je peux faire pour résoudre ce problème?

Merci à l'avance

Kevin D. Loup Tampa, FL

Répondre

18

Vous devez le signe plus pour obtenir emboîtées classes à cartographiés à l'aide Assembly.GeType.

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

Vous êtes proche. Vous avez besoin de "MyCompany.Class1 + Class2". –

+0

Oui, juste remarqué, merci! – CMS

+0

Si l'assemblage n'est pas chargé en mémoire, vous devez avoir le nom de type complet. GetType ("MyCompany.Class1 + Class2, MyAssembly"); – Hallgrim

5

Je pense qu'il s'appelle MyComnpany.Class1 + Class2.

Si je lance ce code sur une structure similaire, c'est ce que je vois:

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

exemple les types de voir les noms.

4

Vous devez utiliser les signes plus. Quelque chose comme "MyAssembly.Class1 + NestedClass".

Questions connexes