我是统一世界的佼佼者,我实际上在这里创造了一个小型2D游戏,这是我的问题:
在我的项目中,我使用了我在这里找到的Singleton泛型类:http://wiki.unity3d.com/index.php/Singleton
这是完美的,直到现在,我想创建一个我称之为Parent的类,这个类扩展了Singleton,而Parent的每个孩子都必须是一个单身,我想知道我该怎么做? / p>
这不起作用:
public class Parent : Singleton<Parent>{
protected Parent(){}
public virtual void method(){
}
public void methidForAllChildes(){
}
}
public class Child : Parent{
public override void method(){
}
}
我打电话的时候:
(Child.Instance).method();
我得到Parent.method()而不是Child.method()
答案 0 :(得分:1)
您的问题是您的子课程正在延长Singleton<Parent>
,如下所示:
Singleton<Parent> <-
Parent | inherited from
Child -------
在Singleton<T>
中,有一个名为Instance
的属性:
public static T Instance {
get;
}
因此,如果您的封闭式泛型类为Singleton<Parent>
,则属性为
public static Parent Instance {
get;
}
这意味着,Child
也继承了上述属性。所以在Child
中,隐含地存在上述声明。如果仍然无法获得,Child
Instance
仍然会返回Parent
!这是因为Child
实际上是继承自Singleton<Parent>
!
现在您知道Child.Instance
会返回Parent
,您知道调用Parent
的{{1}}的原因,因为很明显,您正在调用method
的实例{1}},而不是Parent
。