在 C++/CLI 中将动态类型转换为静态类型

Typecasting a dynamic type to a static type in C++/CLI

我在 C++/CLI 中有一个函数接受一个包含动态字段的静态对象。我想使用这个动态字段。

如果动态字段的真实类型在编译期间是已知的,是否可以将其类型转换为已知类型?我将如何去做呢?

我知道 C++/CLI 不允许您 "consume" 动态类型,但这是否也适用于类型转换?

我尽量避免使用第 3 方库,并希望尽可能简单。

当您在 C++/CLI 中 运行 跨越 c# dynamic 对象时,只需将其视为 System::Object^.

的一种类型

如果你知道你希望它是什么类型,你可以使用 safe_cast 来转换它。

C#代码

dynamic dynamicList = new List<int>();

C++/CLI 代码

List<int>^ staticList = safe_cast<List<int>^>(dynamicList);

如果您不正确,预计会抛出 InvalidCastException