[英]Force cast a COM object to an interface
我正在使用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的支持,但我認為您可以接受。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.