类型转发 (C++/CLI)

类型转发 可以从一个程序集 (程序集 A) 移动类型到另一个程序集 (程序集 B),此类中,重新编译使用程序集 A. 的客户端并不是必需的。

所有平台

此功能不在所有运行时中支持。

运行时的窗口

此函数在 Windows 运行时不受支持。

ms177220.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /ZW

公共语言运行时

下面的代码示例演示如何使用类型转发。

ms177220.collapse_all(zh-cn,VS.110).gif语法

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

ms177220.collapse_all(zh-cn,VS.110).gif参数

  • new
    您将该类型定义的程序集。

  • type
    类型您将另一个程序集的定义。

ms177220.collapse_all(zh-cn,VS.110).gif备注

在和客户端应用程序使用元素 (程序集) 后计时器,您可以使用类型转发从元素 (程序集) 将类型移到另一个程序集,提供更新组件 (和所需的任何其他的程序集),因此,客户端应用程序仍有效,而无需重新编译。

转发类型的元素仅工作引用由现有应用程序。 当重新生成应用程序时,必须具有适当的程序集提供用于应用程序的任何类型引用。

当转发类型时 (从程序集中的类型),则必须添加该类型的 TypeForwardedTo 属性,以及程序集引用。 所引用的程序集必须包含下列操作之一:

  • 类型 ". 的定义。

  • 类型的一个 TypeForwardedTo 属性,以及程序集引用。

可以转发类型的示例包括:

  • ref 类

  • 值类

  • 枚举

  • 接口

您无法转发以下类型:

  • 泛型类型

  • 本机类型

  • 嵌套类型 (如果要转发嵌套类型,应向前为封闭类型)

可以转发类型到任何语言编写的程序集面向公共语言运行时。

因此,因此,如果用于生成 A.dll 程序集的源代码文件包含类型定义 (ref class MyClass) 和要将该类型定义的程序集时,您需要:

  1. 移动 MyClass 类型定义移到使用的源代码文件生成 B.dll。

  2. 生成程序集时

  3. 从使用的源代码中删除 MyClass 类型定义生成 A.dll,并用以下代码替换它:

    #using "B.dll"
    [assembly:TypeForwardedTo(MyClass::typeid)];
    
  4. 生成程序集 A.dll。

  5. 使用 A.dll,而无需重新编译客户端应用程序。

ms177220.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /clr