Duplicata possible:
. NET: Détermine le type de "cette" classe 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 faire en sorte que myActualType
soit typeof(MyImplementation)
?
C'est le modèle que j'ai utilisé.
abstract class MyBase
{
public static void MyMethod(Type type)
{
doSomethingWith(type);
}
}
Le "type" dans une méthode statique est toujours le type spécifique, car il n'existe pas de méthode statique virtuelle.
Dans votre cas, cela signifie que vous pouvez simplement écrire:
var myActualType = typeof(MyBase);
Puisque le "type" de MyMethod
, étant un statique, est toujours une méthode statique de MyBase
.
Et ça?
abstract class MyBase<T>
{
public static void MyMethod()
{
var myActualType = typeof(T);
doSomethingWith(myActualType);
}
}
class MyImplementation : MyBase<MyImplementation>
{
// stuff
}