Псевдоним extern (Справочник по C#)
Иногда может потребоваться сослаться на две версии сборок, которые имеют одинаковые полные имена типов. Например, если необходимо использовать две или более версии сборки в одном приложении. Используя внешний псевдоним сборки, пространства имен для каждой сборки можно перенести внутрь пространств имен корневого уровня с именованием по псевдониму, что позволяет использовать их в одном файле.
Примечание.
Ключевое слово extern также используется в качестве модификатора метода, объявляющего метод, написанный в неуправляемом коде.
Для ссылки на две сборки с одинаковыми полными именами типов псевдоним необходимо указать в командной строке следующим образом:
/r:GridV1=grid.dll
/r:GridV2=grid20.dll
При этом создаются внешние псевдонимы GridV1
и GridV2
. Чтобы использовать эти псевдонимы в программе, сошлитесь на них с помощью ключевого слова extern
. Например:
extern alias GridV1;
extern alias GridV2;
Каждое объявление псевдонима extern создает дополнительное пространство имен корневого уровня, которое является параллельным для глобального пространства имен (но не находится в его пределах). Таким образом, на типы из каждой сборки можно ссылаться без неоднозначности, используя их полное имя, размещенное в соответствующем пространстве имен-псевдониме.
В предыдущем примере GridV1::Grid
является элементом управления сетки из grid.dll
, а GridV2::Grid
— элементом управления сетки из grid20.dll
.
Visual Studio
Если вы используете Visual Studio, псевдонимы можно указать аналогичным образом.
Добавьте ссылку на grid.dll и grid20.dll в проект в Visual Studio. Откройте вкладку свойств и измените псевдонимы с глобальных на GridV1 и GridV2 соответственно.
Используйте эти псевдонимы так же, как описано выше.
extern alias GridV1;
extern alias GridV2;
Теперь можно создать псевдоним для пространства имен или типа, используя директиву псевдонимов using. Дополнительные сведения см. в разделе Директива using.
using Class1V1 = GridV1::Namespace.Class1;
using Class1V2 = GridV2::Namespace.Class1;
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.