扩展另一个扩展Singleton(模式)泛型类的类的类

时间:2015-12-13 03:29:17

标签: c# unity3d singleton subclass

我是统一世界的佼佼者,我实际上在这里创造了一个小型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()

1 个答案:

答案 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