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

时间:2015-02-09 06:18:00

标签: c# dynamic casting c++-cli type-conversion

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

如果在编译期间知道动态字段的实际类型,是否可以将其类型化为已知类型?我该怎么做呢?

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

我正在努力避免使用第三方库,并希望尽可能简化。

1 个答案:

答案 0 :(得分:2)

当您在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