我的要求是获取一个对象的内容并将其强制转换为另一种类型。实际上,内容是指向本地 C++ 类的指针,而点网对象是允许点网访问 C++ 的包装器。因此,同一 C++ 对象可能具有不同的包装器,具体取决于您正在访问的继承层次结构中的哪个类。而且这些包装器没有继承关系。
在 VB.net 我可以写。
Dim s1 As Short = 13
Dim l1 As Long = s1
现在想写,
Dim v1 As ValueTest1 = New ValueTest1(13)
Dim v2 As ValueTest2 = v1
其中 ValueTest1 和 ValueTest2 在 C++/CLI 中被定义为值类型。所以我在 ValueTest1 上有一个构造函数,它接受一个 ValueTest2,但编译器仍然不支持从 ValueTest1 到 ValueTest2 的类型强制。
令人沮丧。
关于如何使其进行隐式转换的任何建议?
可以使用运算符,但是使用对象时还有其他问题,
Dim v1 As ValueTest1 = New ValueTest1(13)
Dim v2 As ValueTest2 = v1 ' OK
Dim o1 As Object = v1
Dim v3 As ValueTest2 = o1 ' fails with the exception below
在 test_xxxxx.dll 中发生了“System.InvalidCastException”类型的第一次机会异常
附加信息:指定的演员表无效。