2012-10-22 46 views
4

如果此问题存在于其他有关此错误的问题中,我表示歉意,但我已经通过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#也很新,所以如果任何人都可以给我一个正确的方向,我会非常感激。

回答

2

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

+0

当你的答案很简单时,你就会喜欢这种感觉。我甚至没有考虑过这个问题,因为我能够在另一个班级中宣布一个新的电子表格而没有任何问题。但是这似乎解决了这个问题。谢谢。 :-) – NewbornNerd

1

尝试宣告Spreadsheet是公共的:

public class Spreadsheet : AbstractSpreadsheet 
{ 
    ... 
} 

你并不需要设置IsValid,在你的构造NormaliseVersion

+0

是的,我不这么认为,这就是为什么我没有它。但后来我看到有人在这里提醒,所以我试了一下。我认为这就是“基地”已经在做的事情。 – NewbornNerd

1
public class Spreadsheet : AbstractSpreadsheet 
    { 

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

    } 

Spreadsheetpublic

相关问题