Перенаправление типов (C++/CLI)

Перенаправление типов позволяет переместить тип из одной сборки (А) в другую (Б), чтобы не компилировать повторно клиенты, использующие сборку А.

Среда выполнения Windows

В среде выполнения Windows эта функция языка не поддерживается.

Среда CLR

В следующем примере кода показано использование перенаправления типа.

Синтаксис

#using "new.dll"
[assembly:TypeForwardedTo(type::typeid)];

Параметры

новую
Сборка, в которую перемещается определение типа.

type
Тип, определение которого перемещается в другую сборку.

Замечания

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

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

При перенаправлении типа (типа А) из сборки необходимо добавить для него атрибут TypeForwardedTo, а также ссылку на сборку. Сборка, на которую осуществляется ссылка, должна содержать один из следующих элементов:

  • определение типа А;

  • атрибут TypeForwardedTo для типа А и ссылку на сборку.

Примеры типов, которые могут переадресовываться:

  • классы ссылок;

  • классы значений;

  • перечисления

  • интерфейсы

Перечисленные ниже типы переадресовывать нельзя:

  • Универсальные типы

  • собственные типы;

  • вложенные типы (если требуется переадресовать вложенный тип, следует переадресовать включающий его тип).

Тип можно переадресовать сборке, созданной на любом языке среды CLR.

Таким образом, если файл исходного кода, используемый для создания сборки A.dll, содержит определение типа (ref class MyClass), которое требуется переместить в сборку B.dll, выполните следующие действия.

  1. Переместите определение типа MyClass в файл исходного кода, используемый для создания сборки B.dll.

  2. Соберите сборку B.dll.

  3. Удалите определение типа MyClass из исходного кода, используемого для создания сборки A.dll, и замените его следующим кодом:

    #using "B.dll"
    [assembly:TypeForwardedTo(MyClass::typeid)];
    
  4. Соберите сборку A.dll.

  5. Используйте сборку A.dll без повторной компиляции клиентских приложений.

Требования

Параметр компилятора: /clr