类型转发 (C++/CLI)
类型转发 可以将从一个程序集 (程序集 A) 的类型到另一个程序集 (程序集 B),这样中,重新编译使用程序集 A. 的客户端是不必要的。
所有平台
此功能在中任何没有运行时支持。
Windows Runtime — Windows 运行时
Windows 运行时 不支持此功能。
要求
编译器选项:/ZW
公共语言运行时
下面的代码示例演示如何在 MDI 中使用控件。
语法
#using "new.dll"
[assembly:TypeForwardedTo(type::typeid)];
参数
new
将类型定义的程序集。type
要移动到另一个程序集中的类型定义。
备注
在和客户端应用程序使用组件 (程序集) 之后计时器,可以使用类型转发将从组件 (程序集) 的类型的另一程序集 (和任何其他组件,提供更新的程序集需要),并且,客户端应用程序将运行,而未经重新编译。
传输组件的类型仅适用于引用由现有的应用程序。 当重新生成应用程序时,必须在应用程序的任何类型相应的程序集引用。
在传输类型 (从程序集 A 的类型),则必须添加该类型的 TypeForwardedTo 特性,以及程序集引用。 所引用的程序集必须包含以下操作之一:
A. 类型的定义。
类型中的一个 TypeForwardedTo 特性,以及程序集引用。
可以正向包括类型的示例:
ref classes
value classes
枚举
接口
不可以将以下类型:
泛型类型
本机类型。
嵌套类型 (如果要转发嵌套类型,应该将封闭的类型)
您可以将类型转换采用任何语言编写的程序集面向公共语言运行时。
因此,用于生成 A.dll,如果程序集的源代码文件包含一个类型定义 (ref class MyClass) 以及要将该类型定义移到程序集时,您将:
移动 MyClass 类型定义移到用于的源代码文件生成 B.dll。
生成 B.dll 程序集
删除使用的源代码中 MyClass 类型定义生成 A.dll,然后用以下代码替换它:
#using "B.dll" [assembly:TypeForwardedTo(MyClass::typeid)];
生成 A.dll 任务程序集。
使用 A.dll,而不必重新编译该客户端应用程序。
要求
编译器选项:/clr