可以';t访问基类中的公共方法

本文关键字:方法 基类 访问 可以 | 更新日期: 2024-10-22 19:51:51

所以我为正在编写的控制台应用程序进行了一些简单的单元测试。当我对一项测试做最后的润色时,我遇到了一个奇怪的访问问题。

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);
}

我的问题是,我很困惑为什么我不能访问基类方法。为什么?

可以';t访问基类中的公共方法

必须将RegexEvaluator签名为public。默认情况下它是internal,这就是为什么您不能从另一个程序集(例如单元测试)访问它。