Добавление существующего поля в существующее сообщение FIX - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь добавить поле OnBehalfOfCompID к сообщению ExecutionReport для протокола Fix Pack, однако мой код выдает ошибку QuickFix.FieldNotFoundException: field not found for tag: 115 при попытке получить значениеэто новое поле.

Мой DataDictionary выглядит следующим образом:

<message name='ExecutionReport' msgcat='app' msgtype='8'>
...
 <field name='OnBehalfOfCompID' required='N' />
...
</message>

Я также вручную изменил наш FixLibV3.Messages.Fix50SP2.ExecutionReport.generated.cs, включив в него сведения OnBehalfOfCompID:

/// <summary>
/// Tag 115 of type STRING->StringField. Optional.
/// </summary>
public Fields.OnBehalfOfCompID OnBehalfOfCompID
{
    get
    {
        var v = new Fields.OnBehalfOfCompID();
        GetField((StringField)v);
        return v;
    }
    set { SetField(value); }
}

/// <summary>
/// Tag 115
/// </summary>
public void Set(Fields.OnBehalfOfCompID v)
{
    OnBehalfOfCompID = v;
}

/// <summary>
/// Tag 115
/// </summary>
public Fields.OnBehalfOfCompID Get(Fields.OnBehalfOfCompID v)
{
    GetField((StringField)v);
    return v;
}

/// <summary>
/// Tag 115
/// </summary>
public bool IsSetOnBehalfOfCompID()
{
    return IsSetField(Fields.Tags.OnBehalfOfCompID);
}

/// <summary>
/// Tag 115
/// </summary>
public bool IsSet(Fields.OnBehalfOfCompID v)
{
    return IsSetOnBehalfOfCompID();
}

Когда япопытаться получить значение для OnBehalfOfCompID с помощью

 _executionReport.GetString(Fields.Tags.OnBehalfOfCompID);

или даже с

_executionReport.OnBehalfOfCompID.getValue();

Я получаю сообщение об ошибке:

'_executionReport.OnBehalfOfCompID' threw an exception of type 'QuickFix.FieldNotFoundException'

Во время отладки я могу четковидим, что поле 115 существует в строковом представлении сообщения.Как успешно вытащить значение из сообщения?Чего мне не хватает?

...