2012-06-02 3 views
1

모두 좋습니다. 1) 나는이 같은 클래스 파일 (Films.cs) 내부에 공공 구조를 정의 :공용 구조가 클래스 외부에서 인식되지 않습니다

public struct CategoryDetails 
     { 
      ... 
     } 

클래스는 모든 문제에 대해, 네임 스페이스에 넣어되지 않습니다.

2) 코드 숨김 파일과 함께 Catalog라는 aspx 파일이 있습니다. 에서 코드 숨김 파일, 나는 (를 Page_Load 메소드와 같은 수준에서)이있다 : 나는 Catalog.ascx.cs (코드 숨김) 파일이 네임 스페이스가 지정

private void PopulateControls() 
     { 
      --> here I would like to have visibility to the CategoryDetails structure, which I don't 
     } 

.

  • A. 지금까지 시도한 것은 동일한 네임 스페이스 안에 Films 클래스를 배치하는 것이 었습니다. 불운.
  • B. 보시다시피 구조는 공개입니다. 도와 줘서 고마워. 많은 감사하겠습니다.

답변

3

Films.CategoryDetails을 대신 시도하십시오. 중첩 된 클래스/구조체는 액세스 할 때 네임 스페이스와 같은 접두사가 붙은 래핑 클래스를 가져야합니다.

private void PopulateControls() 
{ 
    var categorydetails = new Films.CategoryDetails(); 
    //do stuff 
} 

EDIT (당신이 포장 클래스 내에서 액세스하지 않는 한) 다음 Films 클래스 내에서, 그냥 명확하게, 당신은 더 이상 접두사 필요가 없습니다. (모호한 이름 지정 문제가있는 경우에도 접두사가 붙을 수 있습니다.)

namespace MyProject 
{ 
    public class Films 
    { 
     public struct CategoryDetails 
     { 
     } 


     public void DoStuff() 
     { 
      //both are valid 
      var categorydetails = new CategoryDetails(); 
      var otherdetails = new Films.CategoryDetails(); 
     } 

    } 
} 
+1

환상적! 이 곳은 놀라운 곳입니다. 고마워, 크리스! –

+0

당신을 진심으로 환영합니다! 예,이 곳은 좋습니다! –

1

구조체 클래스를 내부 클래스 파일 또는 내부 클래스 파일 films.cs (전역 범위에서)로 구현하고 있습니까? 이 구조체를 탐색 해보십시오.

var categorydetails = new global::CategoryDetails(); 
+0

구조체는 Public 클래스 Films (Films 클래스 파일 아님) 내에 있습니다. 귀하의 제안은, 제가 잘 이해한다면, 두 번째 상황에 적용됩니다. 나는이 경우에 이것을 기억할 것이다. 고마워, 햄릿. –

관련 문제