0

メッセージを作成するために、(C++ DLL ラッパーを使用して) .Net の QuickFix エンジンと戦ってい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

を呼び出すまではすべて問題ないように見えますが、これにより、 「NoDates を NoDates に変換できません」req.set(nodates)というコンパイラ エラーが発生します。

QuickFix dll 内の TradeCaptureRequest のメタデータに移動すると、これが表示されるので、これは私の頭を悩ませます。

public void set(NoDates value);
 // as a member of QuickFix44.TradeCaptureReportRequest

NoDates の定義に移動すると、QuickFix44.TradeCaptureReportRequest.NoDatesクラス内で定義されたクラスに送られますQuickFix44.TradeCaptureReportRequest

ただし、名前空間NoDates内にクラスが定義されてQuickFixおり、次のようにすると問題なくコンパイルされます。

req.set(new QuickFix.NoDates(1));

私は Quickfix v4.0.30128 と C++ DLL の .Net ラッパーを使用しています。

4

1 に答える 1

0

C# コードを見ると、値の型TradeCaptureReportRequest.setが必要であることがわかります。QuickFix.NoDatesNoDates

// 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);

C++ で QuickFix .Net ラッパーを使用しているようです。これは、.Net プログラミング ガイドラインの忌み嫌うものです。QuickFIX/Nに切り替えることを強くお勧めします。

于 2013-02-12T19:56:50.327 に答える