...由于其保护级别为c#/ asp.net而无法访问

时间:2012-02-11 19:41:38

标签: c# asp.net class protection

我有一个单独的类的应用程序,我在代码隐藏文件(在Page_Load中)实例化。在类中有一些我希望能够从代码隐藏文件调用的方法,但由于某种原因它不起作用(SecretNumber.MakeGuess(int)由于它的保护级别而无法访问)。这个课程和方法都是公开的,那可能是什么原因呢?

// Default.asx.cs

...

protected void btnCheckNr_Click(object sender, EventArgs e)
{
    if (!Page.IsValid){
        return;
    }

    else{
        var guessedNr = int.Parse(inputBox.Text);
        var result = SecretNumber.MakeGuess(guessedNr); <- inaccessible due to...
    }
}

// SecretNumber.cs

public class SecretNumber {

    enum Outcome {
        Indefinite,
        Low,
        High,
        Correct,
        NoMoreGuesses,
        PreviousGuess
    };

    // Other code goes here...

    public Outcome MakeGuess(int guess) {
        // Other code here
    }
}

4 个答案:

答案 0 :(得分:5)

这是因为您的结果枚举是私密的。同样在你的代码中,MakeGuess需要被标记为静态,以便按照你编写的方式使用。

答案 1 :(得分:2)

您正在调用该方法,就好像它是static一样,但它不是static方法。你的代码是如何编译的?

澄清一下,这不是可访问性问题的原因,而其他人已经为此发布了解决方案。但是上面提到的方法也是一个明显的问题(除非你在发布代码时没有显示实际上是static而输入错字)。

答案 2 :(得分:1)

结果需要公开,我无法判断你是否已经初始化了类,在这种情况下,它需要被声明为静态。

答案 3 :(得分:0)

您必须public Static Class SecretNumber而不是public Class SecretNumber