2012-08-04 70 views
0

因此,我正在为我编写的控制台应用程序组织一些简单的单元测试。当我对测试进行最后的修改时,遇到了一个奇怪的访问问题。无法访问基类中的公共方法

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

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

+3

我*相信*(不知道,但)你必须签署'RegexEvaluator'作为公共。它默认是内部的,这就是为什么你不能从另一个程序集中访问它(比如单元测试)。 – 2012-08-04 01:21:08

+0

感谢您的反馈,Harbie。请不要忘记标记答案是正确的。问候 – 2012-08-04 01:29:31

回答

1

您必须将RegexEvaluator标记为public。它默认为internal,这就是为什么你不能从另一个程序集中访问它(比如单元测试)。