CS0175在此情况下,关键字“ base”的使用无效

时间:2019-02-20 20:34:24

标签: c# .net c#-4.0 constructor inversion-of-control

我的单元测试用例项目出现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 :(得分:0)

您需要在派生类中提供一个构造函数。

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

}

然后像往常一样构造DerivedCls实例:new DerivedCls(someIUtilityInstance)