title: QuickFix/N: How to have typed messages when using FIXT1.1 with FIX5.0?
body: <p><strong>Context</strong></p>
  
  <p>I have a test Acceptor and Initiator. I am using QuickFix/N 1.7 release. Everything works fine, if I configure both Acceptor and Initiator to FIX 4.4.
  Doing nothing, just connecting, then logging the incoming/outgoing heartbeat messages to the debug console. All OK, see below.</p>
  
  <p>I change <strong>nothing</strong> just the two configuration files accordingly from FIX 4.4 to FIX 5.0. All works (I mean the heartbeat messages still coming and going), but the message parameter of the callback is not a typed (heartbeat) runtime instance message anymore, instead the base class.</p>
  
  <p><strong>Diagnostics:</strong></p>
  
  <ul>
  <li>All referenced specification files are in place. If I intentionally ruin a character either in TransportDataDictionary path or AppDataDictionary I got the expected exception</li>
  <li>Using the out of the box specification files, no customization at all.</li>
  </ul>
  
  <p><strong>Question:</strong></p>
  
  <p>Why the message instance is not a typed runtime instance message in the FIX 5.0 case and typed in the FIX 4.4 case?
  Is this the expected behavior or am I missing something? </p>
  
  <p><strong>Code Exhibits:</strong></p>
  
  <p>Code in Initiator IApplication implementation which produces the output lines:</p>
  
  <pre><code>public void ToAdmin(Message message, SessionID sessionID)
  {
      Debug.WriteLine($@"(A)OUT: {message.GetType()}{message}");
  }
  public void FromAdmin(Message message, SessionID sessionID)
  {
      Debug.WriteLine($@"(A)IN: {message.GetType()}{message}");
  }
  </code></pre>
  
  <p>When using the 4.4 configuration then I see this: (message type is <code>QuickFix.FIX44.Heartbeat</code>)</p>
  
  <pre><code>Logon - FIX.4.4:TEST01-&gt;MYACCEPTOR
  (A)IN: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=249=MYACCEPTOR52=20170715-15:00:31.59656=TEST0110=179
  (A) OUT: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=249=TEST0152=20170715-15:00:31.60456=MYACCEPTOR10=169
  (A) OUT: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=349=TEST0152=20170715-15:00:36.61056=MYACCEPTOR10=172
  (A) IN: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=349=MYACCEPTOR52=20170715-15:00:36.61556=TEST0110=177
  </code></pre>
  
  <p>When using the 5.0 and configuration then I see this: (<strong>message type is just</strong> <code>QuickFix.FIX50.Message</code>)</p>
  
  <pre><code>Logon - FIXT.1.1:TEST01-&gt;MYACCEPTOR
  (A)IN: QuickFix.Message8=FIXT.1.19=5335=034=249=MYACCEPTOR52=20170715-15:06:16.92256=TEST0110=003
  (A) OUT: QuickFix.Message8=FIXT.1.19=5335=034=249=TEST0152=20170715-15:06:16.93056=MYACCEPTOR10=002
  (A) OUT: QuickFix.Message8=FIXT.1.19=5335=034=349=TEST0152=20170715-15:06:21.93656=MYACCEPTOR10=005
  (A) IN: QuickFix.Message8=FIXT.1.19=5335=034=349=MYACCEPTOR52=20170715-15:06:21.94156=TEST0110=001
  </code></pre>
  
  <p>FIX5.0 configuration for Intiator:</p>
  
  <pre><code>[DEFAULT]
  ConnectionType=initiator
  ReconnectInterval=2
  FileStorePath=store
  FileLogPath=log
  StartTime=00:00:00
  EndTime=00:00:00
  UseDataDictionary=Y
  TransportDataDictionary=..\spec\FIXT11.xml
  AppDataDictionary=..\spec\FIX50.xml
  SocketConnectHost=127.0.0.1
  SocketConnectPort=1111
  LogoutTimeout=5
  ResetOnLogon=Y
  ResetOnDisconnect=Y
  
  [SESSION]
  BeginString=FIXT.1.1
  DefaultApplVerID=FIX.5.0
  SenderCompID=TEST01
  TargetCompID=MYACCEPTOR
  HeartBtInt=5
  </code></pre>
  
  <p>FIX5.0 configuration for Acceptor:</p>
  
  <pre><code>[DEFAULT]
  ConnectionType=acceptor
  SocketAcceptPort=1111
  StartTime=00:00:00
  EndTime=00:00:00
  FileLogPath=log
  UseDataDictionary=Y
  ResetOnLogon=Y
  ResetOnLogout=Y
  ResetOnDisconnect=Y
  
  [SESSION]
  BeginString=FIXT.1.1
  DefaultApplVerID=FIX.5.0
  SenderCompID=MYACCEPTOR
  TargetCompID=TEST01
  FileStorePath=store
  TransportDataDictionary=..\spec\FIXT11.xml
  AppDataDictionary=..\spec\FIX50.xml
  </code></pre>