我的问题是我想将一个对象传递给派生类,但必须在基类构造函数之前完成,因为基类会立即调用派生类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
构造函数中来解决这个问题。但是,还有其他类派生自基类;所以我最终不得不在每个派生类中重复这个初始化/启动代码块。我希望看到修改基类的替代方法。