我有一个通用的'设备'类型的抽象基类,并希望要求派生的特定设备类根据其各自的区别初始化列表。摘要字段是不允许的。我如何强制派生类来实例化/初始化一个字段?
当将派生类设置为活动状态时,它必须通过列表将参数设置为活动状态。每个派生类将自己的参数插入到列表中。
下面是相关代码:
基类:
abstract public class Device : Common, IDisposable
{
abstract public Boolean bActive
{
get;
set;
}
abstract List<Parameters> ActiveParameters;
...
}
我不想初始化列表中的基类,因为我不知道哪些参数会被插入到你派生类的列表。此代码产生一个错误,说我不能有一个抽象字段,我明白,但有没有办法要求派生类从基类初始化一个字段?
这个问题的前提是基类是派生类的“主人”:即它可以对他们施加限制,并迫使他们以某种方式行事。你发现很难做到这一点,因为这实际上并不是基类和派生类之间的关系。基类是派生类的仆人;它提供了一个服务,并且派生类在他们认为合适的时候使用该服务。 –