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