我必须对gcroot做一些奇怪的事情,但是在动态强制转换线上出现以下错误:“无法使用'dynamic_cast'从'gcroot'转换为'IMyInterface ^'。在C#中,您可以轻松地将a任何接口(interface)的通用对象,如果该对象未实现接口(interface)但可以编译,则可能会出现运行时错误。

gcroot<Object^> m_pDataObject;
IMyInterface obj = dynamic_cast<IMyInterface^>(m_pDataObject);

最佳答案

这可以工作(编译),并且可以执行您想要的操作(模块将IDisposable替换为所需的接口(interface)):

gcroot<Object^> m_pDataObject;
Object^ obj = m_pDataObject;     // implicit conversion from gcroot<>
IDisposable^ intf = dynamic_cast<IDisposable^>(obj);    // or safe_cast<>

关于.net - 如何在C++。net中将gcroot <Object ^>转换为IMyInterface?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3936614/

10-09 05:57