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

您必须签名RegexEvaluatorpublic。默认情况下,这internal就是您无法从另一个程序集(例如单元测试)访问它的原因。

于 2012-08-04T01:25:14.537 回答