2009-12-17 4 views
1

Visual Basic (.NET 2.0) 솔루션을 정리하고있었습니다. 그것을 두 개의 프로젝트로 나눕니다. 클래스에는 파일의 맨 위에 Namespace RebateCalculator가 있습니다. 이러한 파일은 이제 RebateCalculator라는 기본 네임 스페이스로 Project에 있습니다. Class1.cs 파일을 삽입 한 다음 다른 모든 파일에 네임 스페이스 선언을 삽입하면 정규화 된 클래스 이름이 RebateCalculator.RebateCalculator.Class1이됩니다.Visual Basic 및 네임 스페이스 문제

내가 앞에 붙일 수있는 것이 있습니까? 이름 공간 선언을 사용하면 절대적으로 만들 수 있습니까? 반복하지 말고? 차라리 이런 종류의 솔루션을 찾아 네임 스페이스 선언을 제거하는 것 (파일이 다시 이동하는 경우)

최종 목표 : 'Namespace RebateCalculator'에서 검색/바꾸기를 통해 150에서 문제를 해결할 수 있습니다. 파일.

+0

내가 나를 중복으로이를 닫습니다 도움이 추측 - http://stackoverflow.com/questions/196068/how-do-you-enable-visual-basic-net-namespace-by-default – BuddyJoe

+0

그러나 추가 기호가 있으면 의견을 말하십시오? 또는 누락 된 키워드? – BuddyJoe

답변

5

게시 한 중복 대답은 문제를 암시합니다.

VB.Net에는 "루트 네임 스페이스"라는 개념이 있습니다. 네임 스페이스 문을 코드 파일에 추가하면 지정된 이름이 루트 네임 스페이스와 결합되어 전체 네임 스페이스가 형성됩니다.

VB.Net에서 루트 네임 스페이스가 MyRoot이고 MyNamespace라는 네임 스페이스로 클래스 및 서라운드를 만들면 전체 클래스 이름은 MyRoot.MyNamespace.ClassName이됩니다. Namespace 문을 사용하지 않으면 전체 클래스 이름은 MyRoot.ClassName이됩니다. 즉, 루트 네임 스페이스 설정이 네임 스페이스의 이름에 기여합니다.

C#에서는 그렇지 않습니다. C#에는 "기본 네임 스페이스"가 있습니다. 이것은 단순히 새 클래스를 만들 때 자동으로 추가되는 네임 스페이스 정의입니다. 네임 스페이스 선언을 제거하면 클래스에 네임 스페이스가 없습니다. 즉, 기본 네임 스페이스 설정은 실제로 네임 스페이스의 이름에 기여하지 않습니다.

C#에서는 네임 스페이스 선언에있는 것이 무엇이든 사용되는 네임 스페이스입니다. 기본 네임 스페이스 설정은 코드 파일에 기본적으로 삽입되는 내용 만 결정합니다.

는 "TestVBConsole"의 루트 네임 스페이스 설정과 클래스의 네임 스페이스 문이이 VB 프로그램을 가지고 :

Module Module1 
    Sub Main() 
     Dim tc As New TestClass 

     Console.WriteLine(tc.GetType().FullName) 

    End Sub 
End Module 

이 클래스를

Public Class TestClass 
    Public aField As String = "Default" 
End Class 

출력은

TestVBConsole.TestClass 
입니다

C# 출력의 동일한 프로그램

TestClass 

귀하의 질문에 관해서는, 나는 그 행동을 재정의 할 방법이 없다고 생각합니다. 네임 스페이스 선언이 올바른지 확인하기 위해 C#에서 기억해야합니다.

+0

사실 내가 원했던 것은 이것을 할 수있는 것이 었습니다. 네임 스페이스 Global.NewRoot 또는 네임 스페이스 _.NewRoot 또는 네임 스페이스 *의 .NewRoot – BuddyJoe

5

이 귀하의 질문에 대답을하지만, 단지의 경우 경우 몰라요 ...

열기 프로젝트 속성 및 응용 프로그램 속성을 클릭하십시오. 루트 네임 스페이스를 지우십시오. 그러면 각 파일의 네임 스페이스 선언은 "절대"가됩니다.

그런데 ... 이것은 응용 프로그램을 깨뜨릴 가능성이 높으며 모든 것을 수정하려면 시간이 걸릴 수 있습니다. 시작하기 전에 반드시 백업해야합니다 (또는 적어도 리포에 전념해야합니다).

제쳐두고. 나는 Project Root Namespace를 선언 된 네임 스페이스와 결합하는 것이 혼란 스럽다고 생각한다. 나는 보통 하나 또는 다른 것을한다.

세스

+0

나는 프로젝트 루트 네임 스페이스를 닦았다. 그리고 미래 프로젝트에서이 작업을 수행 할 가능성이 큽니다. 총 통제력을줍니다. 모든 어셈블리에 네임 스페이스를 두는 것. 현재 솔루션에서 두 프로젝트가 이전 버전과의 호환성을 위해 동일한 네임 스페이스에 매핑되어야하기 때문에 이것이 중요했습니다. – BuddyJoe