2009-01-29 8 views
2

J'ai une classe qui ressemble à quelque chose comme ceci:Réflexion pour trouver une classe imbriquée?

public class Parent 
{ 
    public class Subclass 
    { 
    } 
} 

et en utilisant la réflexion, je suis en train de trouver la sous-classe

void main 
{ 
    Parent p = new Parent(); 
    Type t = p.GetType(); 
    Type s = t.GetNestedType("Subclass"); //s is not set 
} 

Cela ne fonctionne pas parce qu'il ya apparemment pas imbriquée les types. Comment puis-je trouver le type de la sous-classe? La raison pour laquelle je dois obtenir s est d'appeler plus tard .GetMethod ("someMethod"). Invoke (...) dessus.

Répondre

3

Je viens d'essayer la même chose, et cela a fonctionné pour moi:

public class ParentClass 
    { 
     public class NestedClass 
     { 

     } 
    } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Type t = typeof(ParentClass); 
      Type t2 = t.GetNestedType("NestedClass"); 
      MessageBox.Show(t2.ToString()); 
     } 

Êtes-vous sûr que le NestedClass est public?

+0

Ah, je réfléchissais sur la mauvaise classe parente. Merci d'avoir vérifié le code! –

Questions connexes