Моя проблема заключается в том, что я хотел бы передать объект производному классу, но он должен быть выполнен перед конструктором базового класса, так как базовый класс немедленно вызовет метод производного класса 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());
}
}
Я сомневаюсь, что вы можете заставить С# выполнить производный конструктор перед базовым конструктором; поэтому я действительно ищу решение для передачи объекта производному классу до использования объекта.
Я обошел это, поставив блок Initialize/Start if внутри конструктора MyDerived
. Однако существуют другие классы, происходящие из базового класса; поэтому мне пришлось повторить этот блок кода Initialize/Start в каждом производном классе. Я бы хотел увидеть альтернативу модификации базового класса.