Как использовать один базовый класс и один абстрактный вместе в классе - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть один класс, который уже наследуется с базовым классом, и мне нужно использовать некоторую функцию из другого абстрактного класса.как это сделать, потому что класс не может наследовать более одного класса.

public Class ABC : BaseClass, SomeAbstractClass
{
}

должен иметь вышеуказанную функциональность.Может кто-нибудь, пожалуйста, помогите мне сделать это в C #.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы не можете. В отличие от 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}
    }
}
0 голосов
/ 03 апреля 2019

Множественное наследование не поддерживается в C #. Что вы можете сделать, это реализовать различные интерфейсы.

public class ABC: BaseClass, ISomeOtherInterface {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...