由于其保护等级......问题,另一个......无法进入

时间:2012-10-22 04:21:00

标签: c# inheritance

我很抱歉,如果这个问题出现在其他关于这个错误的问题的某个地方,但我已经看过了TONS,我仍然被抛出。所以我老了“......由于它的保护级别而无法访问”错误。当这个错误出现时,另一个错误就出现了,我认为这是问题的真正症结所在。我得到“SS.Spreadsheet”没有定义构造函数,这意味着我可能没有正确实现从Abstract类继承的构造函数。或者沿着这些方向发展。

public abstract class AbstractSpreadsheet
{
    public Func<string, bool> IsValid { get; protected set; }

    public Func<string, string> Normalize { get; protected set; }

    public string Version { get; protected set; }

    public AbstractSpreadsheet(Func<string, bool> isValid, Func<string, string> normalize, string version)
    {
        this.IsValid = isValid;
        this.Normalize = normalize;
        this.Version = version;
    }
  ...
}

我的课程:

class Spreadsheet : AbstractSpreadsheet
{

    public Spreadsheet()
        : base(v => true, s => s, "default")
    {
    }
    ...
}

我也尝试了以下方面:

    public Spreadsheet()
        : base(v => true, s => s, "default")
    {
        IsValid = v => true;
        Normalize = s => s;
        Version = "default";
    }

根据我在这里看到的答案。但仍然没有(并且根据我的理解,这无论如何都不会起作用)。

抽象课是给我的,不能改变。

我是否需要在Spreadsheet类中实现IsValid,Normalize和Version覆盖样式方法?或者那种效果......如果是这样,怎么样?

我对编程世界还很陌生,对C#来说还是新手,所以如果有人能给我一个正确方向的推动,我真的很感激。

3 个答案:

答案 0 :(得分:2)

由于示例中的所有内容都是公共的,因此错误可能适用于类本身。尝试将Spreadsheet类公开,看看它是否修复了错误。

答案 1 :(得分:1)

尝试声明Spreadsheet是公开的:

public class Spreadsheet : AbstractSpreadsheet 
{
    ...
}

您无需在构造函数中设置IsValidNormaliseVersion

答案 2 :(得分:1)

public class Spreadsheet : AbstractSpreadsheet
   {

       public Spreadsheet()
           : base(v => true, s => s, "default")
       {
       }

   }

制作Spreadsheet课程public