2009-07-30 8 views
4

Est-il possible d'obtenir l'équivalent de GetType dans un constructeur statique?Get TypeInfo dans le constructeur statique

Je veux parcourir les propriétés disponibles du type dans le constructeur statique mais GetType est une méthode d'instance? Pourquoi est-ce? Le typeinfo doit exister dans le contexte statique. Y a-t-il un moyen de contourner ceci?

Répondre

2

Il suffit d'utiliser

Type type = typeof(TheCurrentType); 

Il ne devrait jamais être plus complexe que cela puisque vous savez toujours le type réel; il n'y a pas de polymorphisme à traiter dans les méthodes statiques.

+0

Mais je dois connaître le type d'exécution. Je veux enregistrer tous les types d'exécution (à l'exécution) qui héritent de cette classe, je dois parcourir tous ses attributs et propriétés et les enregistrer dans un moteur personnalisé, cela doit être fait une fois par type pendant la durée de vie de l'application, et pour chaque sous-classe, existe-t-il un moyen de résoudre le type d'exécution? – Shimmy

+0

@Shimmy il n'y a pas de polymorphisme dans les méthodes statiques. La méthode statique appartient au type auquel elle est déclarée, quels que soient les types dérivés. –

+0

J'ai décidé de créer une méthode statique protégée simple RegisterMetadata (type Type) sur le type de base à appeler à partir de ses sous-classes. La chose est qu'il n'y a aucun moyen d'imposer l'appel de cette méthode à partir de tous les ctor statiques de ses sous-classes. Merci. – Shimmy

0

Je ne pense pas que vous pouvez obtenir des types dérivés (sauf en parcourant tous les types pour voir ce qui dérive du type courant). Pour obtenir le type actuel, vous pouvez:

Type currentType = (new StackFrame()).GetMethod().DeclaringType; 
Questions connexes