Моя проблема в том, что я хотел бы передать объект в производный класс, но это нужно сделать до конструктора базового класса, поскольку базовый класс немедленно вызовет метод Start()
производного класса, который использует объект.
Вот выдержка из базового класса (для удобства переименована в BarcodeScanner ).
public abstract class MyBase
{
public MyBase()
{
if (Initialize())
this.Start();
}
public abstract bool Initialize();
public abstract void Start();
}
Вот производный класс, который я создаю.
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());
}
}
Я сомневаюсь, что вы можете заставить C # выполнить производный конструктор перед базовым конструктором; поэтому я на самом деле просто ищу решение для передачи объекта в производный класс перед использованием объекта.
Я справился с этим, поместив блок Initialize / Start if внутри конструктора MyDerived
. Тем не менее, существуют другие классы, производные от базового класса; поэтому мне пришлось повторить этот блок кода инициализации / запуска в каждом производном классе. Я хотел бы увидеть альтернативу модификации базового класса.