【问题标题】:CS0175 Use of keyword 'base' is not valid in this contextCS0175 在此上下文中使用关键字“base”无效
【发布时间】:2019-02-20 20:34:23
【问题描述】:

我的单元测试用例项目中出现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()
        {

        }
    }

我需要做什么来修复这个错误?我想通过构造函数从派生类传递实用程序类的实例。

【问题讨论】:

  • 错误发生在哪里?您发布的代码甚至没有在任何地方包含标识符base
  • 巧合的是你漏掉了对词库的任何引用,所以它不可能知道
  • @rory.ap 更新了问题。我最初忘记包含代码。
  • @MichaelRandall 更新了问题。我最初忘记包含代码。
  • @elgonzo:更新了问题。我最初忘记包含代码。

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


【解决方案1】:

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

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

}

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

【讨论】:

  • 即使派生类没有使用utility 实例,我是否也需要这样做?添加这个不是把戏。我仍然看到错误。
  • @OpenStack 如果需要派生类调用基类中的特定构造函数,则必须通过在派生类中调用调用构造函数的派生类中的构造函数来告诉它使用哪个特定构造函数基类;这就是我的例子所展示的。如果您尚未更改 DerivedCls cls = new DerivedCls(): base(obj); 行,这就是您仍然看到错误的原因。
  • 我确实做了更改,但仍然看到同样的问题。这就是派生类中的构造函数之一public DerivedCls(iUtility utility) : base(utility){} 的外观。这就是测试用例现在的样子。 iUtility obj = new Utility(); DerivedCls cls = new DerivedCls(obj): base(obj);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2011-02-05
相关资源
最近更新 更多