【问题标题】:child class gives error about parent class constructor [duplicate]子类给出关于父类构造函数的错误[重复]
【发布时间】:2012-08-29 11:52:02
【问题描述】:

可能重复:
Does not contain a constructor that takes 0 arguments

我有一个名为 getData 的 DAL 类,其构造函数强制您传递连接字符串:

namespace AQProduct
{
  public class getData
  {
    public getData(string strConnectionString)
    {
    }
  }
 }

我有做实际工作的类:

namespace AQProduct
{
  public class User_DL : getData
  {
  }
}

构建失败

'AQProduct.getData' 不包含取 0 的构造函数 论据

如何让它工作?

【问题讨论】:

  • string strConnectionString ? class getData ?它们完全合法,但它们并不是 C# 或 .NET 中的标准命名约定;您可能需要考虑更惯用的命名。
  • @Mark:你的建议?
  • connectionString 可能还有DataRetrieverDaoBase

标签: c# class inheritance


【解决方案1】:

在(非静态)类中,如果您不添加自己的构造函数,则会隐式创建一个形式为:

public ClassName : base() { }

即调用基类的无参数构造函数。由于该不存在,您将需要添加自定义构造函数,例如:

public User_DL() : base("some fixed value from somewhere") {}

或:

public User_DL(string connectionString) : base(connectionString) {}

【讨论】:

  • @mark:你的建议是关于:命名约定?
  • @callisto 差不多:丹尼尔说了什么
【解决方案2】:

需要在派生类中添加构造函数,并将连接字符串传递给基类:

public class User_DL : getData
{
    public User_DL(string connectionString)
        : base(connectionString)
    {
    }
}

【讨论】:

    【解决方案3】:

    添加这个构造函数

    public User_DL(string yourConnection) : base(yourConnection)
    {
    
    
    }
    

    【讨论】:

      【解决方案4】:

      您需要在 DAL 类中添加一个默认构造函数:

      // Your default constructor
      public getData()
      {
      }
      

      或者将带有参数的构造函数添加到派生类中;一起去:

      public class User_DL : getData
      {
          public User_DL(string connectionString) : base(connectionString)
          {
             // Insert code here
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        • 1970-01-01
        • 2012-09-15
        • 2016-12-11
        • 2018-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多