Wie greife ich die Type
der geerbten Klasse und übergeben Sie es in den Basiskonstruktor der Klasse auch geerbt? Sehen Sie sich das folgende Codebeispiel:Übergeben aktuellen Objekttyp in Basis Konstruktor Anruf
// VeryBaseClass is in an external assembly
public abstract class VeryBaseClass
{
public VeryBaseClass(string className, MyObject myObject)
{
}
}
// BaseClass and InheritedClass are in my assembly
public abstract class BaseClass : VeryBaseClass
{
public BaseClass(MyObject myObject) :
base(this.GetType().Name, myObject) // can't reference "this" (Type expected)
{
}
}
public class InheritedClass : BaseClass
{
public InheritedClass(MyObject myObject)
{
}
}
Die Linie base(typeof(this).Name, myObject)
funktioniert nicht, weil ich nicht this
noch verweisen kann, da das Objekt nicht beendet hat, Konstruktion und deshalb nicht existiert.
Ist es möglich, die Type
des gerade konstruierenden Objekts zu greifen?
EDIT:
die Probe als orsogufo suggested, wird korrigiert, aber immer noch nicht funktioniert, wie this
nicht definiert ist.
EDIT 2:
Nur um zu klären, möchte ich mit "InheritedClass"
am Ende wird in den Konstruktor VeryBaseClass(string className, MyObject myObject)
geben.
Warum möchten Sie dies tun?Ein Konstruktor sollte sich nicht darum kümmern, ob er aufgerufen wird, seine eigene Klasse oder eine abgeleitete Klasse zu instanziieren. – AakashM
Ich denke, du verpasst den Punkt. Die externe Assembly, die die Basisklasse eines von mir verwendeten Frameworks definiert, benötigt die Zeichenfolgendarstellung der Klasse von sich selbst, die an den Konstruktor übergeben wird. Bisher habe ich es so eingegeben, wie Sie es erwarten würden (als String), aber ich würde es vorziehen, wenn es zur Laufzeit um der Vernunft willen funktionieren würde. – Codesleuth
Oh ich sehe, es ist nicht deine Klasse. Ich denke immer noch, dass es eine schlechte Sache ist, dass es sich interessiert :) – AakashM