Führen Sie einen abgeleiteten Konstruktor vor dem Basiskonstruktor in C# ausC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Führen Sie einen abgeleiteten Konstruktor vor dem Basiskonstruktor in C# aus

Post by Anonymous »

Mein Problem hierbei ist, dass ich ein Objekt an eine abgeleitete Klasse übergeben möchte, dies muss jedoch vor dem Konstruktor der Basisklasse erfolgen, da die Basisklasse sofort die Start()-Methode der abgeleiteten Klasse aufruft, die das Objekt verwendet.

Hier ist ein Auszug aus der Basisklasse (der Einfachheit halber in BarcodeScanner umbenannt).

Code: Select all

public abstract class MyBase
{
public MyBase()
{
if (Initialize())
this.Start();
}

public abstract bool Initialize();
public abstract void Start();
}
Hier ist die abgeleitete Klasse, die ich erstelle.

Code: Select all

class MyDerived : MyBase
{
private string sampleObject;

public MyDerived (string initObject)
{
sampleObject = initObject;
}

public override bool Initialize()
{
return GetDevice();
}
public override void Start()
{
Console.WriteLine("Processing " + sampleObject.ToString());
}
}
Ich bezweifle, dass Sie C# dazu bringen können, einen abgeleiteten Konstruktor vor dem Basiskonstruktor auszuführen; Daher suche ich eigentlich nur nach einer Lösung, um ein Objekt an die abgeleitete Klasse zu übergeben, bevor das Objekt verwendet wird.

Ich habe dies umgangen, indem ich den Initialize/Start if-Block in den MyDerived-Konstruktor eingefügt habe. Es gibt jedoch auch andere Klassen, die von der Basisklasse abgeleitet sind. Daher musste ich diesen Block des Initialisierungs-/Startcodes in jeder abgeleiteten Klasse wiederholen. Ich würde gerne eine Alternative zum Ändern der Basisklasse sehen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post