2012-01-24 5 views
1

정적 클래스 TestClass를 App_Code 폴더에 배치했습니다. 클래스에는 정적 메서드 인 TestMethod가 포함되어 있습니다. Button.Click 메서드를 통해 Default.aspx.cs에서 TestMethod를 호출하려고합니다. - test = TestClass.TestMethod(). 오류가 발생합니다. 'TestClass'보호 수준으로 인해 액세스 할 수 없습니다.정적 클래스 C# ASP.NET Web Forms에서 정적 메서드 호출

정적 클래스처럼 _Default 클래스를 공용 네임 스페이스에 배치해야하지만 Default.aspx 컨트롤 참조를 "제외"합니다.

내가 뭘 잘못하고 있니?

+0

여기는 액세스 수정자를 설명하는 데 유용한 링크입니다. http://msdn.microsoft.com/en-us/library/wxh6fsc7%28v=vs.71%29.aspx – MethodMan

답변

3

당신은 public으로 TestClass를 선언해야합니다

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

기본 가시성 타입 정의의 회원 유형 internalprivate입니다. App_Code 폴더는 코드 배후 컴파일시 생성 된 어셈블리와는 다른 자체 어셈블리로 컴파일됩니다. internal 유형을 어셈블리간에 공유 할 수 없습니다 (이 경우 100 % true가 아니지만이 경우 true). 따라서이 문제가 발생하는 이유는 무엇입니까?

+0

우수! 고마워! – user1121487

1

public static으로 설정하십시오.

public class TestClass{ 
    public static TestMethod(){} 

} 
1

확인 TestClass에 공개되어 있는지 확인 :

public class TestClass 
{ 
} 

기본을 비주얼 스튜디오에 클래스가 "공개"를 생략하는 것입니다 추가 할 때.

1

적어도 프로토 타입에 '내부'범위가 있는지 확인하십시오.

0

클래스가 정적이라고해서 모든 코드/어셈블리에서 액세스 할 수 있다는 의미는 아닙니다. 정적 클래스에 웹 양식에서 액세스 할 수있는 액세스 한정자 (예 : public)가 있는지 확인하십시오.

관련 문제