我在C ++ / CLI中有一个接受静态对象的函数,它包含一个动态字段。我想使用这个动态字段。
如果在编译期间知道动态字段的实际类型,是否可以将其类型化为已知类型?我该怎么做呢?
我知道C ++ / CLI不允许您“使用”动态类型,但这是否也适用于类型转换?
我正在努力避免使用第三方库,并希望尽可能简化。
答案 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
。