それで、私が書いていたコンソールアプリケーションのいくつかの簡単な単体テストをまとめていました。テストの最後の仕上げをしているときに、奇妙なアクセスの問題に遭遇しました。
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);
}
私の質問は、なぜ基本クラスのメソッドにアクセスできなかったのか混乱しています。なんで?