2009-07-01 5 views
12

호기심에서, 나는 동일한 네임 스페이스 (Library1)를 가진 두 개의 어셈블리 (모두 Class1)를 만들었습니다. 그런 다음이 두 어셈블리를 참조하는 다른 클라이언트를 만들고 Class1 인스턴스를 만들려고합니다.2 .NET 어셈블리에서 같은 이름 및 네임 스페이스 유형 사용

컴파일러는 당연히 모호한 참조에 대한 컴파일 오류를 제공합니다. 모호성을 피하기 위해 사용하려는 어셈블리에서 형식을 명시 적으로 지정하는 방법이 있습니까?

참고 : 실제로는 전혀 발생하지 않는 경우가 거의 없습니다. 그것은 언어 기능에 대한 호기심에 불과한 질문입니다.

답변

10

전역 네임 스페이스 외부에 어셈블리 네임 스페이스를 래핑하려면 extern alias을 사용해야한다고 생각합니다.

  1. 2 어셈블리를 참조하는 프로젝트에서 참조 아래 중 하나를 선택하고 속성 창에서 global, Library1a, 말에 global에서 별칭 값을 변경하는 방법은 다음과 같습니다.

  2. 다른 참조에도 동일하게 적용하지만 다른 별칭을 지정하십시오. 예를 들어 global, Library1b으로 가보겠습니다.

  3. extern alias Library1a; 및/또는 extern alias Library1b;을 어셈블리를 사용하는 모든 클래스의 첫 번째 줄로 삽입하십시오.

  4. 모호한 구성원에 액세스 할 때는 Library1a. 또는 Library1b.으로 이름 공간을 한정하십시오. 예 : 그것은 실제로 일어나고 진짜 고통이다 Library1a.Library1.Class1...Library1b.Library1.Class1...

1

, 외부 별명이 항상 문제를 해결할 수 있습니다. 다음은 문제가되는 곳의 예입니다. Duplicate Namepsaces.

관련 문제