我正在使用.Net中的QuickFix引擎(使用C ++ DLL包装器)来制作TradeCaptureReportRequest
消息:
var req = new QuickFix44.TradeCaptureReportRequest();
req.set(new QuickFix.SubscriptionRequestType(QuickFix.SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES)); // 263
req.set(new QuickFix.TradeRequestID("testing" + DateTime.Now.Second.ToString())); // 568
var nodates = new QuickFix44.TradeCaptureReportRequest.NoDates();
nodates.set(new QuickFix.TradeDate("20130201"));
req.set(nodates); // 580
在我调用req.set(nodates)
之前,所有内容似乎都很好看,这会导致编译错误,指出“NoDates无法转换为NoDates”。
这令我难以置信,因为当我在QuickFix dll中导航到TradeCaptureRequest的元数据时,我就会看到这一点。
public void set(NoDates value);
// as a member of QuickFix44.TradeCaptureReportRequest
如果我转到NoDates的定义,它会将我发送到QuickFix44.TradeCaptureReportRequest.NoDates
类中定义的QuickFix44.TradeCaptureReportRequest
类。
然而,在NoDates
namesapace中定义了一个QuickFix
类,当我执行以下操作时,它会编译得很好。
req.set(new QuickFix.NoDates(1));
我正在使用Quickfix v4.0.30128和.Net包装器来使用C ++ DLL。
答案 0 :(得分:0)
如果您查看TradeCaptureReportRequest.set
的C#代码,您会发现QuickFix.NoDates
值的NoDates
类型:
// line: 1993
public void set(QuickFix.NoDates value)
{ setField(value); }
因此,请将您的C#更改为以下内容:
var nodates = new QuickFix.NoDates();
nodates.set(new QuickFix.TradeDate("20130201"));
req.set(nodates);
看来你正在使用QuickFix .Net包装器而不是C ++,这是对.Net编程指南的憎恶。我强烈建议您切换到QuickFIX/N,这不太可怕(但仍然看起来很糟糕)。