代码之家  ›  专栏  ›  技术社区  ›  OpenStack

cs0175在此上下文中使用关键字“base”无效

  •  -1
  • OpenStack  · 技术社区  · 6 年前

    我得到 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");
        }
    
    }
    

    在我的单元测试项目中,我正在测试派生类并尝试传递实用程序类的实例。为什么我现在这样做可能没有意义,但我计划使用unity框架并使用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 回复  |  直到 6 年前
        1
  •  0
  •   Daniel Mann    6 年前

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

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

    然后构建你的 DerivedCls 通常情况下,您会: new DerivedCls(someIUtilityInstance)