背景:我正在使用 Interactive Brokers 和 Matlab 的 C# API 来加载财务数据并对其进行分析。我习惯于在 Matlab 中编码,但对 C# 处于初级水平。我创建了一个包含所有相应函数的 dll 文件来获取市场数据,并将该库实现到 Matlab 中,以便我可以在 Matlab 中启动这些函数。
当前问题:使用 Matlab 我正在调用一个通过 Interactive Broker API 请求实时市场数据的方法(“顶级方法”) 。除此之外,在此过程中还调用了以下方法,该方法只是将 tickSize 写入控制台:
public virtual void tickSize(int tickerId, int field, int size)
{
Console.WriteLine("Tick Size. Ticker Id:" + tickerId + ", Field: " + field + ", Size: " + size + "\n");
}
就我的研究而言,这个方法被声明为“void”,因为没有直接的输出变量被返回,因为请求的信息只是写在控制台中。
问题是,这个方法是通过 IB API 中另一个更复杂的方法调用的,它也被声明为“void”。
目标:我想在用Matlab调用顶层方法时得到这个方法(tickSize)的信息作为输出。
约束:调用“tickSize”的 IB API 中的方法也被声明为 void 方法,并且是具有许多约束和 if 子句的复杂 C# 方法,我很可能不喜欢自己修改。
解决问题的尝试:我想教科书解决此问题的方法是编写一个定义相应输出类型的方法(对于此示例,如果我只想获取tickerId,请说'int',然后调整IB API 的复杂方法同样输出类型,最后但并非最不重要的是调整上面发布的方法,以便变量可以通过过程传递。但是,如上所述,我不想弄乱完整的交易API 并且 IB 的技术支持建议自己编写另一个第四个方法,然后可以以某种方式保存输出(int tickerId)并将其直接传递给 main 方法。这是我对 C# 的了解肯定结束的地方,也是很长的谷歌搜索似乎没有为这个特定问题提供任何结果。
问题:当 C# 中有多个级别的方法时,有没有办法克服一个方法被声明为“void”并将输出直接发送到顶级方法?
如果有帮助,我还可以提供我正在谈论的相应方法,但正如我所说的 API 非常复杂,我不想在这里发送所有代码