簡體   English   中英

無法將對象...轉換為類型

[英]Unable to cast object … to type

Visual Studio 2008(C#)為我的COM對象創建了Interop。 我使用的主要對象是: OPCHDAServerClassIOPCHDAItemsOPCHDAItem 代碼是:

OPCHDAServerClass server = new OPCHDAServerClass();
server.Connect("OPC.PHDServerHDA.1");
OPCHDAItem item = server.OPCHDAItems.AddItem("MyItem",1);

在第三行中, AddItem方法應返回OPCHDAItem AddItem的互操作定義是:

[DispId(1610743813)]
OPCHDAItem AddItem(string ItemID, int ClientHandle);

我得到的例外是:

無法將“OPCHDAServerClass”類型的對象強制轉換為“IOPCHDAItems”類型。

我不明白為什么我收到此錯誤消息。 server.OPCHDAItems實現IOPCHDAItems 我不知道為什么服務器( OPCHDAServerClass )被IOPCHDAItemsIOPCHDAItems

我在python中進行了初始原型設計工作正常,所以我知道COM組件是有用的。 這是python代碼:

server = win32com.client.dynamic.Dispatch("Uniformance.OPCHDA.Automation.1")
server.Connect("OPC.PHDServerHDA.1")
item = server.OPCHDAItems.AddItem("MyItem", 1)

有沒有人看過類似的問題並知道一項工作?

看起來聲明的屬性類型OPCHDAItems不是IOPCHDAItems - 它是OPCHDAServerClass C#是一種靜態類型語言 - 除非明確告知,否則不會對COM接口進行類型轉換,除非告知,否則它不會用於IDispatch。 改寫如下:

server.Connect("MyServerName");
OPCHDAItem item = (server.OPCHDAItems as IOPCHDAItems).AddItem("MyItem",1);

編輯:先試試這個:

IOPCHDAItems Items = server.OPCHDAItems;

還是一樣的錯誤? 怎么樣

IOPCHDAItems Items = server.OPCHDAItems as IOPCHDAItems;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM