Поделиться через


псевдоним extern (справочник по C#)

Возможно, вам придется ссылаться на две версии сборок с одинаковыми полными именами типов. Например, в одном приложении может потребоваться использовать две или более версии сборки. Используя псевдоним внешней сборки, пространства имен из каждой сборки можно упаковать в пространства имен корневого уровня с именем псевдонима, который позволяет использовать их в одном файле.

Замечание

Ключевое слово extern также используется в качестве модификатора метода, объявляя метод, написанный в неуправляемом коде.

Чтобы ссылаться на две сборки с одинаковыми полными именами типов, псевдоним должен быть указан в командной строке следующим образом:

/r:GridV1=grid.dll

/r:GridV2=grid20.dll

При этом создаются внешние псевдонимы GridV1 и GridV2. Чтобы использовать эти псевдонимы из программы, ссылайтесь на них с помощью ключевого extern слова. Рассмотрим пример.

extern alias GridV1;

extern alias GridV2;

Каждое объявление экстерна псевдонима представляет дополнительное пространство имен корневого уровня, которое параллельно (но не лежит в пределах) глобального пространства имен. Таким образом, типы из каждой сборки можно ссылаться без неоднозначности с помощью полного имени, корняющегося в соответствующем псевдониме пространства имен.

В предыдущем примере GridV1::Grid будет элемент управления сеткой из grid.dllgrid20.dll, из который GridV2::Grid будет использоваться элемент управления сеткой.

Использование Visual Studio

Если вы используете Visual Studio, псевдонимы можно предоставить аналогичным образом.

Добавьте ссылку наgrid.dll и grid20.dll в проект в Visual Studio. Откройте вкладку свойств и измените псевдонимы с глобального на GridV1 и GridV2 соответственно.

Используйте эти псевдонимы так же, как описано выше

 extern alias GridV1;  
  
 extern alias GridV2;  

Теперь можно создать псевдоним для пространства имен или типа с помощью директивы псевдонима. Дополнительные сведения см. в директиве using.

using Class1V1 = GridV1::Namespace.Class1;

using Class1V2 = GridV2::Namespace.Class1;

Спецификация языка C#

Дополнительные сведения см. в спецификации языка C#. Спецификация языка является авторитетным источником синтаксиса и использования языка C#.

См. также