2010-06-13 9 views
0

J'écris une bibliothèque qui génère dynamiquement des classes dérivées de classes abstraites au moment de l'exécution. Le constructeur de la classe dérivée a besoin d'un MethodInfo du constructeur de la classe de base pour pouvoir l'invoquer. Toutefois, pour une raison quelconque, Type.GetConstructor() renvoie null. Par exemple:Comment utiliser la réflexion pour obtenir un constructeur par défaut?

abstract class Test 
{ 
    public abstract void F(); 
} 

public static void Main(string[] args) 
{ 
    ConstructorInfo constructor = typeof(Test).GetConstructor(
     BindingFlags.NonPublic | BindingFlags.Public, 
     null, System.Type.EmptyTypes, null); // returns null! 
} 

Notez que GetConstructor retours null même si je déclare explicitement un constructeur dans Test, et même si le test est pas abstrait.

Répondre

0

Compris. J'ai oublié le drapeau BindingFlags.Instance.

La chose étrange est que

ConstructorInfo constructor = typeof(Test).GetConstructor(System.Type.EmptyTypes); 

renvoie NULL. Est-ce défectueux?

Questions connexes