Выполнение производного конструктора перед базовым конструктором в C#C#

Место общения программистов C#
Ответить
Anonymous
 Выполнение производного конструктора перед базовым конструктором в C#

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/735 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»