派生类构造函数错误

时间:2011-04-13 06:08:22

标签: c# c#-3.0

试着非常简洁地解释这个

  • 我有一个抽象基类和2个派生类。
  • 基类有一个构造函数,它接受一个字符串参数并将其分配给一个字段
  • 派生类构造函数调用基类构造函数,每个构造函数都接受一个字符串参数。
  • 这些是主解决方案中引用的类库项目的一部分。
  • 总的来说,当我尝试创建一个类的实例时,传入一个参数(应该是),我遇到了这个错误:

library.class不包含带有单个参数的构造函数。

如果我创建没有参数的对象,则会创建以下错误行:

  由于它的保护级别,

library.class.constructor(string)无法访问。

我无法找到解决这个问题的方法,我提供下面的基本代码,如果有人可以看看并判断这里发生了什么错误,那真的很棒:

基类:

abstract class EmployeeBase
    {
private string empNumber;
public EmployeeBase(string CurrentEmployeeNumber)  { empNumber = CurrentEmployeeNumber;}
......

派生类:

class EmployeeExempt : EmployeeBase
    {
        public EmployeeExempt(string CurrentEmployeeNumber) : base(CurrentEmployeeNumber) 
        { }
........

主要方法:

EmployeeExempt emp1 = new EmployeeExempt("1000");

我相信这是我的计划的核心,希望有人能够发现这里发生的错误

5 个答案:

答案 0 :(得分:2)

您应该将基类和派生类明确声明为public。类的default accessibilityinternal,因此主方法无法访问这两个类。它们只能在您的类库项目中访问。

答案 1 :(得分:1)

您应该收到三个错误消息:

Test.cs(7,9): error CS0122: 'EmployeeExempt' is inaccessible due to its
        protection level
Test.cs(7,35): error CS0122: 'EmployeeExempt' is inaccessible due to its
        protection level
Test.cs(7,31): error CS1729: 'EmployeeExempt' does not contain a constructor
        that takes 1 arguments

前两个应该使问题非常清楚 - 正如其他答案所说,EmployeeBase和EmployeeExempt都是内部类(非嵌套类型的默认可访问性),这意味着它们只能在同一个程序集中访问。包含Main方法的类位于不同的程序集中,因此您无权访问它们。

让它们公开。

我承认最后一条错误消息有点误导,但您应该查看所有错误消息而不仅仅是那个 - 前两个应该给您足够的提示正在进行中。

答案 2 :(得分:0)

我看到的唯一问题是EmployeeExemptinternal而不是public,但这与错误消息不符... 我假设,您没有向我们展示所有相关代码,或者代码与您展示的代码有所不同。

答案 3 :(得分:0)

您的两个类都被声明为私有。使用public前缀类名,或者如果它们可能位于同一个程序集内部。

答案 4 :(得分:-1)

基类EmployeeBase中的字符串是私有的。尝试公开。