2009-12-12 2 views
2

는,이 컴파일 :C#에서 대 비주얼 Basic.NET에서 네임 스페이스의 차이는 그들과 함께 처리하는 방법 C#에서

namespace Name 
{ 
    public class Test 
    { 
    } 

    public class TestUse 
    { 
     private global::Name.Test test; 
    } 
} 

당신이 VB.NET에서 같은를 시도 할 경우, 그러나, 그것은하지 않습니다 :

Namespace Name 
    Public Class Test 
    End Class 

    Public Class TestUse 
     Private test As Global.Name.Test 
    End Class 
End Namespace 

나는 (내가 "테스트"를 사용하려고하는 방식에 따라) 수 중 " '이름' '< 기본 >'의 구성원이 아닙니다." 또는 "Type 'Name.Test'가 정의되지 않았습니다." 내 오류 목록에. 나는 그것을 작동시키는 두 가지 방법을 찾았지만 어느 것도 사용자의 기대에 부합하지 않는다. 하나는 프로젝트 속성에서 "루트 네임 스페이스"를 제거하는 것입니다. 다른 하나는 "전역"과 "이름"사이에 해당 네임 스페이스를 포함시키는 것입니다.

저는 C# 및 VB.NET 용 코드를 생성하기 위해 CodeDom을 사용하는 사용자 지정 도구를 만들었습니다. 이것이 위의 두 수정 중 어느 것도 가능하지 않은 이유입니다. 사용자가 빈 네임 스페이스를 가질 것으로 기대할 수는 없으며 코드 생성에서 VB 관련 트릭을 수행해야합니다. "루트 네임 스페이스"를 고르는 것 (내 머리 꼭대기가 어떨지 알 수는 없지만)을 코드 생성에 포함시키는 것과 같은 언어 중립적 인 도구를 사용하는 것이 목적입니까?

생성 된 출력에 대해 나쁜 이름을 선택하는 사용자로부터 도구를 보호하므로 전역 수정자를 제외하고 싶지 않습니다. 아무도 내가이 문제를 어떻게 처리해야하는지에 대한 제안을 가지고 있습니까?

+0

현재 확인을 위해 Windows 컴퓨터가 없지만 "개인 테스트로 테스트"라고 말할 수는 없습니까? 내가 포함 된 네임 스페이스가 자동으로 검색 중에 검색된 것으로 생각했습니다. –

답변

2

어쨌든 두 언어에 대해 서로 다른 코드 작업을 수행해야한다는 점을 감안할 때,이 코드를 생성하는 데있어 차이점이있는 또 다른 버킷에 불과할 것입니다.

기본 네임 스페이스를 삽입하는 VB 관련 트릭의 코딩은 다른 구현 세부 정보와 비교하여 처음에는 너무 큰 문제는 아닙니다.

행운을 빈다.

+0

그래, 결국 VB- 특정 코드 생성 버크를 약간 추가했다. 나는 불행히도 다른 해결책을 보지 못했습니다. – Alex

관련 문제