0

それで、私が書いていたコンソールアプリケーションのいくつかの簡単な単体テストをまとめていました。テストの最後の仕上げをしているときに、奇妙なアクセスの問題に遭遇しました。

Assert.Equals(testRegex.Evaluate(testString),true);

これにより、保護レベルが原因でEvaluateメソッドにアクセスできないというエラーが発生しました。基本クラスでは公開されています。これが基本クラスとサブクラスです。

abstract class RegexEvaluator
{
    //Fields
    protected string Regex { get; set; }

    public bool Evaluate(string text)
    {
        if (System.Text.RegularExpressions.Regex.IsMatch(text, Regex))
            return true;
        else
            return false;
    }
}

public class SSNRegex : RegexEvaluator
{
    public SSNRegex()
    {
        //Stubbed for now, don't worry about the regex
        this.Regex = "\\d{3}-\\d{2}-\\d{4}";
    }
}

SSNRegexに追加することで問題を解決することができました

public bool Evaluate(string text)
{
    return base.Evaluate(text);
}

私の質問は、なぜ基本クラスのメソッドにアクセスできなかったのか混乱しています。なんで?

4

1 に答える 1

1

RegexEvaluatorとして署名する必要がありpublicます。これinternalはデフォルトであるため、別のアセンブリ(単体テストなど)からアクセスすることはできません。

于 2012-08-04T01:25:14.537 に答える