我正在使用COM API访问某个类,但应用程序开发人员尚未将该类完全暴露给COM。所以当我输入shape.Custom.Cells
VS抱怨“细胞不存在时...... bla bla bla ..”。
但是,当我调试我的代码,并在VS调试器中打开对象时,它具有HAS属性! ..正是我想要访问的属性!
所以我试图用手写界面访问这些属性:
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!有没有办法在运行时访问这些属性?
答案 0 :(得分:1)
您无法将对象强制转换为未实现的接口。因此,您无法创建自己的界面并尝试将对象强制转换为它。
您可以尝试使用dynamic
代替。您将失去IntelliSense支持,但我认为您可以忍受这一点。