所以我想设置一个抽象基类来派生子类。所有的工作都将发生在孩子身上,但我希望孩子们能够互相参考。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