强制将 COM 对象转换为接口

问题描述 投票:0回答:1

我正在使用 COM API 访问某个类,但应用程序开发人员尚未将该类完全公开给 COM。所以当我输入

shape.Custom.Cells
VS 抱怨时:

“细胞不存在.. bla bla bla..”。

但是,当我调试代码并在 VS 调试器中打开对象时,它具有属性! ..正是我想要访问的属性!

enter image description here

所以我尝试使用手写界面访问这些属性:

internal interface CorelTableShape {

object Cells { get; }
object Borders { get; }
object Columns { get; }
object Rows { get; }
object Selection { get; }

}

并将 COM 对象投射到我的界面....

 CorelTableShape table = (CorelTableShape)shape.Custom;

...触发 InvalidCastException!有没有办法在运行时访问这些属性?

err

c# .net com coreldraw
1个回答
2
投票

您不能将对象强制转换为它未实现的接口。因此,您无法创建自己的接口并尝试将对象强制转换为它。

您可以尝试使用

dynamic
代替。您将失去 IntelliSense 支持,但我认为您可以忍受这一点。

© www.soinside.com 2019 - 2024. All rights reserved.