2012-08-04 69 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,這就是爲什麼你不能從另一個程序集中訪問它(比如單元測試)。

相關問題