为什么我会得到错误“;无法强制转换类型为';的对象;OpcCom.Factory';键入';Opc.I

本文关键字:对象 OpcCom Opc 键入 Factory 类型 错误 为什么 转换 | 更新日期: 2023-09-27 18:27:53

我使用的是带有Visual Studio 2012的OPC Foundation.NET API。当我尝试连接时,我得到了这个错误:

无法将"OpcCom.Factory"类型的对象强制转换为"Opc.IFactory"类型

在该代码中的指令new Opc.Da.Server(处:

private void button1_Click(object sender, EventArgs e)
{
    Opc.Da.Server plcServer = null;
    string serverUrl = "opcda://localhost/RSLinx OPC Server";
    plcServer = new Opc.Da.Server(new OpcCom.Factory(), new Opc.URL(serverUrl));
    plcServer.Connect();
}

为什么我会得到错误“;无法强制转换类型为';的对象;OpcCom.Factory';键入';Opc.I

它抛出此错误是因为Opc.Da.Server的接口需要Opc.IFactory,但从OpcCom.Factory()返回的内容没有实现该接口。

问题是我使用的rslinx的版本,rslinx安装了opc.net api 1.3版(我不知道),然后我安装了opc.net api 2.0来制作我的opc客户端,所以当我添加引用时,我没有注意到我有两个版本的dll,我只选择了列表中看到的第一个。

最后,我使用了OpcNetApi.dll 2.0和OpcNetApi.Com.dll 1.3。这就是它抛出错误的原因。