Favicon

Extern alias

Peponi12/9/20242m

C#
SyntaxKeywordNamespace

1. Introduction

using 지시문을 여러 어셈블리를 대상으로 사용하는 경우, 형식이 동일한 경우가 발생할 수 있다. 이 때, extern alias 키워드를 이용하여 각 어셈블리의 별칭을 생성할 수 있다.

2. Example

아래와 같은 namespace, class name이 동일한 두 어셈블리가 존재한다고 가정한다.

Assembly 1
namespace ClassLibrary
{
    public class Class
    {
        public Class() => Console.WriteLine("Assembly1");
    }
}
Assembly 2
namespace ClassLibrary
{
    public class Class
    {
        public Class() => Console.WriteLine("Assembly2");
    }
}

프로젝트에 두 어셈블리를 참조한 후, 종속성 참조 속성에 별칭을 추가하거나 아래와 같이 프로젝트 파일에 alias를 추가한다.

<ItemGroup>
  <Reference Include="ClassLibrary1" Aliases="ClassLibrary1">
    <HintPath>..\ClassLibrary1.dll</HintPath>
  </Reference>
  <Reference Include="ClassLibrary2" Aliases="ClassLibrary2">
    <HintPath>..\ClassLibrary2.dll</HintPath>
  </Reference>
</ItemGroup>

코드 파일에서는 extern aliasusing 선언 후 사용한다.

extern alias ClassLibrary1;
extern alias ClassLibrary2;
 
using Class1 = ClassLibrary1.ClassLibrary.Class;
using Class2 = ClassLibrary2.ClassLibrary.Class;
 
namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Class1 c1 = new Class1();
            Class2 c2 = new Class2();
        }
    }
}

3. 참조 자료