【问题标题】:InvalidCastException When using ActiveX in C# project在 C# 项目中使用 ActiveX 时出现 InvalidCastException
【发布时间】:2011-12-12 16:01:51
【问题描述】:

尊敬的所有交易者和 API 专家,

提前谢谢你。

背景:

  1. Visual Studio 2010,C# 语言,ActiveX OCX API 作为项目的参考。
  2. 成功使用reqAccountUpdate等API提供的方法,使用事件接收账户更新信息。

问题:

  1. 现在我想要求提供一种特定金融工具的数据,例如外汇对:AUD.USD。

一个。第 1 步:从 TWSLib 继承 IContract 类的接口我的代码在这里如图所示,构造函数是针对 AUD.USD 的: a busy cat http://i.minus.com/iyG7RLuSGxiEl.jpg

如您所见,我已将私有对象 _combolLegs 更改为私有 TWSLib.IComboLeg _comboLegs

b.第 2 步:我还将 IComboleg 和 IUpdateComp 继承到 ComboLeg 和 UpdateComp 并且我没有为它们分配任何值,因为它们不相关 到 AUD.USD 外汇交易。

c。现在我创建一个合约实例并尝试分配外汇合约所需的所有信息并提交我的查询。 a busy cat http://i.minus.com/iXvgbSsp4MbYz.jpg

d。这是一个运行时错误。请在此处查看图片: a busy cat http://i.minus.com/ifFxdfnyvfKF9.jpg

我创建的合约实例似乎无法被 api 接受为正式的 IContract 实例。来自任何 .NET 专家的任何想法?:)

再次提前非常感谢,

谦虚的学习者。

文豪

编辑

关于 IContract 的详细信息我到目前为止得到的所有信息

a busy cat http://i.minus.com/iAoY8rCvbC22z.jpg

【问题讨论】:

  • 由于合同继承自 IContract,您是否只想创建一个合同实例,您将 IContract 类型传递给该方法,如果您粘贴 IContract 接口的副本,这可能会有所帮助,以便我们可以看到它是如何定义的。

标签: c# activex .net


【解决方案1】:
//Try changing the way that you implement the Interface / Clase where you have 
// -- var auduse = new Contract();

//depending on boxing and unboxing from this point try to reverse it and do the following
IContract iaudUse = new Contract();
//then you would use iaudUse. what ever method in the Interface that you are wanting to use.

【讨论】:

  • 您的代码/示例有点混乱,如果您正在剪切和粘贴点点滴滴,您不能指望我们知道您的接口/类是做什么的,以及您到底想做什么或完成..屏幕截图很好,但在安排和您要求我们帮助您的方面有点混乱..您可以粘贴完整的类和完整的接口声明...?
  • 我完全不明白哪一部分是乱七八糟的。简短的话:1.我继承了API类2.我使用一种方法提交请求,该方法需要一个参数作为IContract的实例。 3.问题是装箱或拆箱的东西。就是这样
  • 我正在尝试遵循您的代码,但我确信您的代码比您粘贴的示例大.. 属性的屏幕截图还可以,但代码方面并没有什么好处因为你有代码,我们不仅试图提供帮助。我为我在词混乱中的误用表示歉意。我只是无法遵循你想要做的事情我需要查看入口点或主要方法调用某些地方
  • 感谢您的回复。可以给我你的电子邮件地址,然后我可以分享我的代码。包含5个cs文件真的不长,其中三个是最简单的继承类文件。我可以?非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2011-08-31
  • 2017-11-01
  • 2016-09-27
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
相关资源
最近更新 更多