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#にも非常に慣れていないので、誰かが私に正しい方向に突き進むことができれば、本当に感謝しています。

4

3 に答える 3

2

例のすべてが公開されているため、エラーはおそらくクラス自体に当てはまります。Spreadsheetクラスを公開してみて、エラーが修正されるかどうかを確認してください。

于 2012-10-22T04:26:10.713 に答える
1

Spreadsheet公開することを宣言してみてください。

public class Spreadsheet : AbstractSpreadsheet 
{
    ...
}

IsValidNormaliseまたはVersionコンストラクターで設定する必要はありません。

于 2012-10-22T04:25:29.763 に答える
1
public class Spreadsheet : AbstractSpreadsheet
   {

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

   }

Spreadsheetクラスを作るpublic

于 2012-10-22T04:29:54.100 に答える