我正在尝试从其 API 中的 Interactive Brokers 示例中了解部分代码。它是关于处理来自传入消息的数据,虽然我了解事件处理的一般流程,但我不了解这一部分:
ibClient.ScannerData += (reqId, rank, contractDetails, distance, benchmark, projection, legsStr) =>
HandleMessage(new ScannerMessage(reqId, rank, contractDetails, distance, benchmark, projection, legsStr));
这行代码发生了什么?我了解更宏大的计划中正在发生的事情,但不了解正在发生的事情ibClient.ScannerData += ([params]) => f(g([params]))
该HandleMessage
方法显然负责处理传入的消息,并且由于这行代码只运行一次,我相信这是在告诉ibClient.ScannerData
信息如何处理ScannerData
发送到ibClient
.
这是ibClient
后端的样子 -
public event Action<int, int, ContractDetails, string, string, string, string> ScannerData;
void EWrapper.scannerData(int reqId, int rank, ContractDetails contractDetails, string distance, string benchmark, string projection, string legsStr)
{
var tmp = ScannerData;
if (tmp != null)
tmp(reqId, rank, contractDetails, distance, benchmark, projection, legsStr);
}
在哪里EWrapper.scannerData
——
void scannerData (int reqId, int rank, ContractDetails contractDetails, string distance, string benchmark, string projection, string legsStr)
提供市场扫描仪请求产生的数据。