Моя проблема заключается в том, что я хотел бы передать объект производному классу, но он должен быть выполнен перед конструктором базового класса, так как базовый класс немедленно вызовет метод производного класса 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 в каждом производном классе. Я бы хотел увидеть альтернативу модификации базового класса.