C#创建一个派生自抽象和单例类的类

时间:2016-12-19 11:50:21

标签: c# inheritance singleton multiple-inheritance

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异常。有没有解决方案或我必须使用接口? 提前致谢。

1 个答案:

答案 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对这个解释,我希望这个答案能帮到你。