强制将COM对象强制转换为接口

时间:2013-12-28 20:54:27

标签: c# api com .net coreldraw

我正在使用COM API访问某个类,但应用程序开发人员尚未将该类完全暴露给COM。所以当我输入shape.Custom.Cells VS抱怨“细胞不存在时...... bla bla bla ..”。

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

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

1 个答案:

答案 0 :(得分:1)

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

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