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的实例,并给出一个null异常。有没有解决方案或我必须使用接口? 提前致谢。
答案 0 :(得分:2)
第一个问题是:您想在这些课程之间分享什么?
等待这个答案,我会尝试尽可能详细地给你一个通用的解释。
1 - 仅共享方法
如果您只想共享方法,最佳做法是使用Interfaces根据需要拆分逻辑并将其提供给具体的类:
public interface IInterface1{
//some methods
}
public interface IInterface2{
//some methods
}
public class MyClass : IInterface1, IInterface2{
}
如果你愿意的话,MyClass 可以是抽象的,你可以把一些方法作为虚拟来覆盖它们,如果你想要的话
2 - 分享方法和属性
您将以相同的方式执行此操作,但需要将接口添加到正确的类
public interface IInterface1{
//some methods
}
public interface IInterface2{
//some methods
}
public abstract class MyAbstractClass {
//some methods and properties
}
public class MyClass : MyAbstractClass, IInterface1, IInterface2{
}
您可以将界面添加到 MyAbstractClass 而不是 MyClass ,这取决于您的架构和您的需求
3 - Singleton
对于单身人士,如评论中所述,这只是获取全局可访问性的一种方式,因此您需要在“last”类中执行此操作,此处 MyClass 强>
我希望我能正确表达myselft对这个解释,我希望这个答案能帮到你。