51 Stimmen

GetType in statischer Methode

Mögliches Duplikat:
.NET: Bestimmen des Typs der Klasse "this" in ihrer statischen Methode

Wie kann ich die GetType() zugänglich von einem static Methode?

Ich habe diese abstrakte Basisklasse

abstract class MyBase
{
   public static void MyMethod()
   {
      var myActualType = GetType(); // this is an instance method
      doSomethingWith(myActualType);
   }
}

und eine Implementierung dieser Klasse. (Ich könnte viele Implementierungen haben.)

class MyImplementation : MyBase 
{
    // stuff
}

Wie kann ich die myActualType zu sein typeof(MyImplementation) ?

59voto

Reed Copsey Punkte 536986

Der "Typ" innerhalb einer statischen Methode ist immer der spezifische Typ, da es keine virtuelle statische Methode gibt.

In Ihrem Fall bedeutet das, dass Sie einfach schreiben können:

 var myActualType = typeof(MyBase);

Da der "Typ" von MyMethod ist als statisches Element immer eine statische Methode der MyBase .

24voto

matt Punkte 8657

Und was ist damit?

abstract class MyBase<T>
{
   public static void MyMethod()
   {
      var myActualType = typeof(T);
      doSomethingWith(myActualType);
   }
}

class MyImplementation : MyBase<MyImplementation>
{
    // stuff
}

3voto

Daniel A. White Punkte 180762

Dies ist das Muster, das ich verwendet habe.

abstract class MyBase
{
   public static void MyMethod(Type type)
   {
      doSomethingWith(type);
   }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X