C# 派生类构造函数错误
试图非常简洁地解释这一点C# 派生类构造函数错误,c#,c#-3.0,C#,C# 3.0,试图非常简洁地解释这一点 我有一个抽象基类和两个派生类 基类有一个构造函数,该构造函数接受单个字符串参数并将其分配给字段 派生类构造函数调用基类构造函数,每个构造函数都接受一个字符串参数 它们是在主解决方案中引用的类库项目的一部分 大体上,当我尝试创建类的实例时,传入一个参数(应该是这样),我遇到了以下错误: library.class不包含接受单个参数的构造函数 如果我创建的对象没有参数,则会创建以下错误行: library.class.constructor(字符串)由于其保护级别而无法
- 我有一个抽象基类和两个派生类
- 基类有一个构造函数,该构造函数接受单个字符串参数并将其分配给字段
- 派生类构造函数调用基类构造函数,每个构造函数都接受一个字符串参数
- 它们是在主解决方案中引用的类库项目的一部分
- 大体上,当我尝试创建类的实例时,传入一个参数(应该是这样),我遇到了以下错误:
library.class
不包含接受单个参数的构造函数
如果我创建的对象没有参数,则会创建以下错误行:
library.class.constructor(字符串)
由于其保护级别而无法访问
我无法找到这个问题的解决方案,我在下面提供了我的基本代码,如果有人能看看并判断这里发生了什么错误,那将非常棒:
基类:
派生类:
主要方法是:
我相信这是我程序的核心,希望有人能指出这里发生的错误您应该明确地将基类和派生类声明为
public
。for类是内部的
,因此这两个类都无法从主方法访问。它们只能从类库项目中访问。基类EmployeeBase中的字符串是私有的。尝试将其公开。我看到的唯一问题是,员工豁免
是内部
而不是公开
,但这与错误消息不匹配…我想,您没有向我们展示所有相关代码,或者代码与您展示的代码确实略有不同。您应该会收到三条错误消息:
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和EmployeeException都是内部类(非嵌套类型的默认可访问性),这意味着它们只能在同一程序集中访问。包含Main方法的类位于不同的程序集中,因此您无权访问它们
把它们公之于众
我承认最后一条错误消息有点误导,但您应该查看所有的错误消息,而不仅仅是那条-前两条应该为您提供足够的关于发生了什么的提示。您的两个类都被声明为私有类。在类名前面加上public前缀,或者如果它们要在同一程序集中,可能是内部的。基类构造函数是public的。不过,类本身不是这样。@Sujay:您用私有字段进行的编辑仍然是错误的,因此,我不会删除我的否决票。@Daniel。没问题“你犯的每一个错误都表明你还在学习”-约翰·列侬(我的吉他轻轻地哭泣):-)嗯,你能把下面的一个答案标记为正确吗?
class EmployeeExempt : EmployeeBase
{
public EmployeeExempt(string CurrentEmployeeNumber) : base(CurrentEmployeeNumber)
{ }
........
EmployeeExempt emp1 = new EmployeeExempt("1000");
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