所以我想設置一個抽象基類來派生子類。所有的工作都將發生在孩子身上,但我希望孩子們能夠互相參考。C#創建一個列表來保存基類的任何派生子項
下面是一些僞代碼:
public abstract class BaseClass<T> : SomeOtherClass {
public List<BaseClass> listOfChildren;
protected T thisChild;
public void DoMoreStuff(){
Debug.Log("Doing more stuff");
}
protected virtual void DoSomething(int i){
listOfChildren[i].DoMoreStuff();
}
}
public class FirstChildClass : BaseClass<FirstChildClass> {
FirstChildClass<T>(){
thisChild = this;
}
public void FirstClassStuff(){
Debug.Log("first class stuff");
}
}
public class SecondChildClass : BaseClass<SecondChildClass> {
public void SecondClassStuff(){
Debug.Log("second class stuff");
}
}
我將如何做一個泛型列表接受任何子類?
我需要與T使用DoMoreStuff()類型轉換listOfChildren嗎?
就其本身而言,這種設置還有什麼內在的錯誤嗎?
進一步,我可以輕鬆地讓每個孩子類Singleton? – user1297102
@ user1297102你真的需要嗎? –
它在某些情況下會很有用,難道這會有些困難嗎?我想我可以把一個 '受保護的靜態T實例'(但這將需要BaseClass儀式?)在基地,不知道如何設置構造函數if(!實例)instance = this; else「already exists 「反對這一點。 –
user1297102