2012-02-15 2 views
0

저는 C# 프로젝트에 포함 된 DLL을 가지고 있습니다. "one.dll"이라고 부르 자. 이 DLL에는 "staticclass"라는 정적 클래스가 포함되어 있습니다.C에서 동일한 이름을 가진 두 개의 정적 클래스 사용 #

동일한 프로젝트에도 포함되어있는 다른 DLL이 있습니다.이 DLL은 또한 "staticclass"라는 정적 클래스를 포함합니다.

이제 내 프로젝트에서 두 DLL을 동시에 포함하고 "staticclass"에 액세스하려고하면 자연히 오류가 발생합니다. 클래스의 이름을 변경하거나 별칭을 부여 할 수있는 방법이 있나요? "one.dll"의 "staticclass"가 그대로 유지되며 "staticclassTwo"에 별칭을 둘 수 있습니다. .DLL "

나는 소스 코덱에 액세스 할 수 없습니다 유의하시기 바랍니다 모두"one.dll "와"two.dll "

+2

클래스의 정규화 된 이름을 사용할 수 있습니다. 즉, 네임 스페이스 – Jason

답변

8

(필자는 두 개의 클래스가 같은 네임 스페이스에 또한 믿고있어. 만약 단순히 별칭을 지정하거나 코드의 정규화 된 이름을 사용하면됩니다.

실제로 별칭을 지정할 수 있습니다 (extern alias). 효과적으로 이것은 네임 스페이스 차별화의 또 다른 수준으로 "어셈블리"를 추가합니다.

분명히 할 수있을 때 이런 상황을 피해야하지만, C#이 절대적으로해야 할 때 매우 명시적인 방법을 제공한다는 것이 좋습니다.

Anson Horton은 실제 사용 방법에 대해 good walkthrough을 보유하고 있습니다.

+0

을 포함 할 수 있습니다.이 두 클래스는 동일한 네임 스페이스에있을 수도 있고 없을 수도 있습니다. 나는 그것에 대해 모른다. 난 그냥 내 프로젝트에 그 DLL의 참조를 추가하고 "staticclass"를 입력하고 그 후에 점을 주면, 그것은 나에게 사용 가능한 메소드와 속성의 목록을 제공한다. 나는 네임 스페이스를 맨 위에 선언조차하지 않는다는 의미입니다. DLL을 추가하고 해당 클래스를 사용하기 만하면됩니다. – Ali

+0

Ali 솔루션 탐색기에서 참조 폴더를 열면 어셈블리를 두 번 클릭하고 개체 브라우저에서 해당 어셈블리를 열 수 있습니다. 이렇게하면이 어셈블리에있는 네임 스페이스와 그 네임 스페이스에있는 클래스를 정확하게 볼 수 있습니다. – Despertar

+0

죄송합니다. 이전에 언급 한 내용을 잘못 이해했습니다. 실제로는 위에서 네임 스페이스를 선언하고 있습니다. 두 네임 스페이스는 두 DLL에서 모두 동일하므로 Jon Skeet이 말한대로 extern alias를 사용했습니다. 감사. – Ali

0

별칭을 사용하면됩니다.

코드에서 네임 스페이스 줄 바로 아래; 아래에 주어진 사용 별칭 :이 도움이

namespace ConsoleApp 
{ 

    using ClassOne = Assembly.One.MyClass; /* your dll 1 class */ 
    using ClassTwo = Assembly.Two.MyClass; /* your dll 2 class */ 

    class Program 
    { 

     static void Main(string[] args) 
     { 

      ClassOne one = new ClassOne(); 
      // Do your stuff with ClassOne object 

      ClassTwo two = new ClassTwo(); 
      // Do your stuff with ClassTwo object 

     } 
    } 
} 

희망!

관련 문제