Бөлісу құралы:


Псевдоним 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#.

См. также