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

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

Все платформы

Эта функция не поддерживается во всех средах выполнения.

Колесо

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

ms177220.collapse_all(ru-ru,VS.110).gifТребования

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

Среда CLR

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

ms177220.collapse_all(ru-ru,VS.110).gifСинтаксис

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

ms177220.collapse_all(ru-ru,VS.110).gifПараметры

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

  • type
    Определение типа, который необходимо переместить в другую сборку.

ms177220.collapse_all(ru-ru,VS.110).gifЗаметки

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

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

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

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

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

Примеры типов, которые могут быть переадресованы включают:

  • классы ref

  • классы значения

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

  • интерфейсы;

Не удается переадресовать следующие типы:

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

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

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

Можно переадресованы тип в сборке написанный на любом языке, предназначенных для среды 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 без перекомпиляции клиентских приложений.

ms177220.collapse_all(ru-ru,VS.110).gifТребования

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