无法在基类中访问公共方法

时间:2012-08-04 01:16:46

标签: c# oop

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

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

这引发了一个错误,称由于其保护级别,评估方法无法访问。它在基类中是公共的。这是基类和子类。

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

我的问题是我对为什么我无法访问基类方法感到困惑。为什么呢?

1 个答案:

答案 0 :(得分:1)

您必须将RegexEvaluator签署为public。默认情况下为internal,这就是您无法从其他程序集访问它的原因(例如单元测试)。