這是C#相關的,但實際上這個問題是非常通用的。如何強制派生類填充基類中定義的列表?
比方說,我有一個基類
abstract class Base {
protected List<string> MyList = new List<string>();
protected abstract void FillMyList();
}
class Derived : Base {
protected void FillMyList() {
MyList.Add("test");
MyList.Add("test2");
}
}
這是確定的,派生類填補了基類中定義的MYLIST。
但是,除了抽象方法名稱(FillMyList) - 提示您實際上需要填充MyList - 這種方法應該表示什麼不知道。
有沒有更好的方式強制執行或(更好地)建議您在從Base繼承時必須填寫MyList? 也許具有FillMyList聲明:
protected abstract void FillMyList(List<string> listToFill);
你有什麼建議?
抽象方法和屬性都給出了相同的效果,即「必須實現它」 – TalentTuner 2010-11-22 09:37:41
嗨Nagg,這是訣竅。謝謝。 @saurabh:true,但這會強制Derived執行某些操作並實際返回列表(即使爲空)。 – sh0uzama 2010-11-22 10:13:14