CS0175 Использование ключевого слова "base" недопустимо в этом контексте. - PullRequest
0 голосов
/ 20 февраля 2019

Я получаю CS0175 Use of keyword 'base' is not valid in this context ошибку в моем проекте модульного теста.

Так выглядит мой код:

Класс, который реализует интерфейс

public interface iUtility
{
    void Print();
}
public class Utility: iUtility
{
    public void Print()
    {
        Console.Write("Print");
    }
}

Базовый класс, который использует служебный класс и производный класс

public class BaseCls
{
    private iUtility _iUtility;
    public BaseCls()
    {
        _iUtility = new Utility();
    }

    public BaseCls(iUtility iUtility)
    {
        _iUtility = iUtility;
    }
}

public class DerivedCls : BaseCls
{
    public void PrintSomething()
    {
        Console.Write("Print Something");
    }

}

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

Я не показываю весь код для краткости.

Произошла ошибка в модульном тестовом проекте

[TestClass]
    public class UnitTest1
    {
        public void TestInitialize()
        {
            //I want to pass instance of utility class here
              iUtility obj = new Utility();
             DerivedCls cls = new DerivedCls(): base(obj);
        }



        [TestMethod]
        public void TestMethod1()
        {

        }
    }

Что мне нужно сделать, чтобы исправить эту ошибку?Я хочу передать экземпляр служебного класса из производного класса через конструктор.

1 Ответ

0 голосов
/ 20 февраля 2019

Вам необходимо предоставить конструктор в производном классе.

public class DerivedCls : BaseCls
{
    public DerivedCls(iUtility utility) : base(utility) { }

}

Затем создайте свои DerivedCls экземпляры, как обычно: new DerivedCls(someIUtilityInstance)

...