首页 > 解决方案 > 如何在一个类中同时使用一个基类和一个抽象类

问题描述

我有一个类已经继承了基类,我需要使用另一个抽象类的一些函数。如何做到这一点,因为一个类不能继承多个类。

public Class ABC : BaseClass, SomeAbstractClass
{
}

需要具备以上功能。有人可以帮我在c#中做到这一点。

标签: .netoopc#-4.0

解决方案


你不能。与 C++ 不同,C# 不支持多个基类。

您可以做的是继承抽象类,并实现从基类中提取的接口-而不是从基类继承,而是具有其类型的字段(简而言之,使用组合而不是继承):

public Class ABC : SomeAbstractClass, IBaseClass
{
    private IBaseClass _base;

    // initialize the IBaseClass in your constructor:

    public ABC(int a, string b)
        : base(a) // assume a constructor that takes an int on the abstract class
    {
        _base = new BaseClass(b); // assume a constructor that takes a string on the base class
    }

    // or a constructor for Dependency Injection:
    public ABC(int a, IBaseClass baseClass)
        : base(a)
    {
         _base = baseClass;
    }

    // implement the interface like this:

    public int SomeIBaseClassMethod(string a, int b)
    {
        return _base.SomeBaseClassMethod(a, b);
    }

    public bool IsValid 
    {
        get {return _base.IsValid;} 
        set {_base.IsValid = value}
    }
}

推荐阅读