2013-02-12 1 views
0

Я боролся с двигателем QuickFix в .Net (используя ++ DLL оболочки C), чтобы обработать TradeCaptureReportRequest сообщений:проблем пространства имен в .NET DLL обертке QuickFix в

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».

Это пугает мой разум, так как, когда я перехожу к метаданным TradeCaptureRequest в dll QuickFix, мне это показано.

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

, если я пойду к определению NoDates он посылает меня к QuickFix44.TradeCaptureReportRequest.NoDates класса, определенного в QuickFix44.TradeCaptureReportRequest класса.

но есть NoDates Класс, определенный в пределах QuickFix namesapace, который компилируется просто отлично, когда я делаю следующее.

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

Я использую Quickfix v4.0.30128 и .Net-оболочку для C++ DLL.

+0

Вы не сказали, в чем проблема. Получают исключение, ошибку компилятора и т. Д.? –

+0

Мой плохой ......... – priehl

ответ

0

Если вы посмотрите на код C# для TradeCaptureReportRequest.set вы обнаружите, что он хотел бы 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, что менее ужасно (но все еще ужасно выглядит).

+0

, по-видимому, я могу сделать что-то вроде этого, пойти фигурой ... QuickFix44.TradeCaptureReportRequest.NoDates nodates = new QuickFix44.TradeCaptureReportRequest.NoDates(); nodates.set (новый QuickFix.TradeDate ("20130211")); req.addGroup (nodates); // 75 – priehl