Вызвать статический метод в статическом классе C # ASP.NET Web Forms - PullRequest
1 голос
/ 25 января 2012

Я поместил статический класс TestClass в папку App_Code.Класс содержит статический метод TestMethod.Из Default.aspx.cs через метод Button_Click я пытаюсь вызвать TestMethod.- test = TestClass.TestMethod ().Это приводит к ошибке: «TestClass» недоступен из-за уровня защиты.

Такое ощущение, что статический класс и класс _Default должны быть помещены в общее пространство имен, но это «исключит» элементы управления Default.aspx.ссылки.

Что я делаю не так?

Ответы [ 5 ]

3 голосов
/ 25 января 2012

Вам необходимо объявить TestClass как общедоступное:

public static class TestClass
{
    public static SomeType TestMethod()
    {
    }
}

Видимость по умолчанию: internal для типов и private для членов определения типа.Папка App_Code компилируется в свою собственную сборку, отличную от сборки, которая создается при компиляции кода.internal типы не могут быть разделены между сборками (это не на 100% верно, но верно в этом случае), поэтому у вас возникает эта проблема.

1 голос
/ 25 января 2012

Убедитесь, что у вас есть хотя бы «внутренняя» область действия для прототипа вашего метода.

1 голос
/ 25 января 2012

Убедитесь, что TestClass является общедоступным:

public class TestClass
{
}

По умолчанию при добавлении класса в Visual Studio пропускается "public".

1 голос
/ 25 января 2012

Попробуй сделать его статическим.

public class TestClass{
   public static TestMethod(){}

}
0 голосов
/ 25 января 2012

Тот факт, что ваш класс является статическим, не означает, что он доступен для всего кода / сборок. Убедитесь, что у вашего статического класса есть модификатор доступа (то есть общедоступный), который доступен через вашу веб-форму.

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