在 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
。
我在 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
。