我有一個通用的'設備'類型的抽象基類,並希望要求派生的特定設備類根據其各自的區別初始化列表。摘要字段是不允許的。我如何強制派生類來實例化/初始化一個字段?
當將派生類設置爲活動狀態時,它必須通過列表將參數設置爲活動狀態。每個派生類將自己的參數插入到列表中。
下面是相關代碼:
基類:
abstract public class Device : Common, IDisposable
{
abstract public Boolean bActive
{
get;
set;
}
abstract List<Parameters> ActiveParameters;
...
}
我不想初始化列表中的基類,因爲我不知道哪些參數會被插入到你派生類的列表。此代碼產生一個錯誤,說我不能有一個抽象字段,我明白,但有沒有辦法要求派生類從基類初始化一個字段?
這個問題的前提是基類是派生類的「主人」:即它可以對他們施加限制,並迫使他們以某種方式行事。你發現很難做到這一點,因爲這實際上並不是基類和派生類之間的關係。基類是派生類的僕人;它提供了一個服務,並且派生類在他們認爲合適的時候使用該服務。 –