Dupliquer possible:
.NET: Détermine le type de la classe “this” dans sa méthode statique
Comment puis-je rendre GetType()
accessible à partir d’une méthode static
?
J’ai cette classe de base abstraite
abstract class MyBase { public static void MyMethod() { var myActualType = GetType(); // this is an instance method doSomethingWith(myActualType); } }
et une implémentation de cette classe. (Je pourrais avoir plusieurs implémentations.)
class MyImplementation : MyBase { // stuff }
Comment puis-je obtenir que myActualType
soit de typeof(MyImplementation)
?
Le “type” dans une méthode statique est toujours le type spécifique, car il n’existe pas de méthode virtuelle statique.
Dans votre cas, cela signifie que vous pouvez simplement écrire:
var myActualType = typeof(MyBase);
Étant donné que le “type” de MyMethod
, en tant que statique, est toujours une méthode statique de MyBase
.
Et ça?
abstract class MyBase { public static void MyMethod() { var myActualType = typeof(T); doSomethingWith(myActualType); } } class MyImplementation : MyBase { // stuff }
C’est le motif que j’ai utilisé.
abstract class MyBase { public static void MyMethod(Type type) { doSomethingWith(type); } }