【发布时间】:2016-12-19 11:50:20
【问题描述】:
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
// this is my singleton class
}
public abstract class A : Singleton<A>
{
// this is my base abstract class.
}
public B : A
{
// I want this class to be derived from A, also to derive from Singleton and MonoBehaviour
}``
由于 c# 不支持多重继承。我正在尝试创建一个从 A 类和单例类派生的类。当我调用 B 的实例时,它会创建 A 的实例并给出空异常。有解决方案还是我必须使用界面? 提前致谢。
【问题讨论】:
-
单例并没有给你那么多,只是一个静态成员和一个实例获取器......可以在类中实现它。
-
Singleton 与其说是一种对象,不如说是一种编码模式。您使用 Singleton 来获得静态对象的“全局”可访问性,同时仍然具有实例的好处。无需创建
Singleton类来实现这种行为。 -
要创建一个单例类,您应该将其构造函数设为私有。然后使用非私有属性使用单例模式获取类的实例。像这样
public Singleton<T> Instance => _instance ?? _instance = new Singleton() -
确实如此。应该不可能从单例继承,因为这样就可以通过创建没有实现重写的派生类来颠覆单例的意图,从而允许实例化同一类的第二个实例。
标签: c# inheritance singleton multiple-inheritance