... недоступен из-за уровня защиты c # / asp.net - PullRequest
4 голосов
/ 11 февраля 2012

У меня есть приложение с отдельным классом, который я создаю в кодовом файле (в 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 ]

5 голосов
/ 11 февраля 2012

Это потому, что ваше перечисление результатов является частным.Также в вашем коде MakeGuess нужно пометить как статический, чтобы использовать его так, как вы его написали.

2 голосов
/ 11 февраля 2012

Вы вызываете метод, как если бы он был static, но это не метод static.Как ваш код даже компилировался ??

Чтобы уточнить, это не является причиной проблемы доступности, и другие опубликовали решение для этого.Но вышеупомянутый способ вызова метода также является явной проблемой (если только вы не поместите опечатку, не показывая, что на самом деле static при публикации кода).

1 голос
/ 11 февраля 2012

Результат должен быть объявлен общедоступным, и я не могу сказать, инициализирован ли у вас класс, и в этом случае он либо должен быть объявлен как статический

0 голосов
/ 08 марта 2013

Вы должны public Static Class SecretNumber вместо public Class SecretNumber

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...