Creating a Message using the new Message(string) constructor doesn't return an identical message to the original. It modifies and increments a number of things.
Executing the following code:
public void fromApp(Message msg, SessionID sessionID)
{
string message = msg.ToString();
Message nm = new Message(message);
Debug.WriteLine("orig: " + msg.ToXML());
Debug.WriteLine("new: " + nm.ToXML());
}
yields:
orig: <message>
<header>
<field number="8"><![CDATA[FIX.4.2]]></field>
<field number="9"><![CDATA[257]]></field>
<field number="35"><![CDATA[8]]></field>
<field number="34"><![CDATA[2]]></field>
<field number="49"><![CDATA[SCTC]]></field>
<field number="52"><![CDATA[20110518-19:39:08.402]]></field>
<field number="56"><![CDATA[SCT1]]></field>
</header>
<body>
<field number="6"><![CDATA[0.0000]]></field>
<field number="11"><![CDATA[SCT20110518-153908_00000]]></field>
<field number="14"><![CDATA[0]]></field>
<field number="17"><![CDATA[1839597056]]></field>
<field number="18"><![CDATA[1]]></field>
<field number="20"><![CDATA[0]]></field>
<field number="21"><![CDATA[1]]></field>
<field number="31"><![CDATA[0.0000]]></field>
<field number="32"><![CDATA[0]]></field>
<field number="37"><![CDATA[110518-193902-3]]></field>
<field number="38"><![CDATA[200]]></field>
<field number="39"><![CDATA[0]]></field>
<field number="40"><![CDATA[1]]></field>
<field number="54"><![CDATA[1]]></field>
<field number="55"><![CDATA[IBM]]></field>
<field number="58"><![CDATA[SCT20110518-153908_00000]]></field>
<field number="59"><![CDATA[0]]></field>
<field number="60"><![CDATA[20110518-19:39:02.590]]></field>
<field number="150"><![CDATA[0]]></field>
<field number="151"><![CDATA[200]]></field>
</body>
<trailer>
<field number="10"><![CDATA[058]]></field>
</trailer>
</message>
new: <message>
<header>
<field number="8"><![CDATA[FIX.4.2]]></field>
<field number="9"><![CDATA[258]]></field>
<field number="35"><![CDATA[8]]></field>
<field number="34"><![CDATA[71]]></field>
<field number="49"><![CDATA[DBSI]]></field>
<field number="52"><![CDATA[20110518-19:39:02.591]]></field>
<field number="56"><![CDATA[SCTC]]></field>
</header>
<body>
<field number="6"><![CDATA[0.0000]]></field>
<field number="11"><![CDATA[SCT20110518-153908_00000]]></field>
<field number="14"><![CDATA[0]]></field>
<field number="17"><![CDATA[1839597056]]></field>
<field number="18"><![CDATA[1]]></field>
<field number="20"><![CDATA[0]]></field>
<field number="21"><![CDATA[1]]></field>
<field number="31"><![CDATA[0.0000]]></field>
<field number="32"><![CDATA[0]]></field>
<field number="37"><![CDATA[110518-193902-3]]></field>
<field number="38"><![CDATA[200]]></field>
<field number="39"><![CDATA[0]]></field>
<field number="40"><![CDATA[1]]></field>
<field number="54"><![CDATA[1]]></field>
<field number="55"><![CDATA[IBM]]></field>
<field number="58"><![CDATA[SCT20110518-153908_00000]]></field>
<field number="59"><![CDATA[0]]></field>
<field number="60"><![CDATA[20110518-19:39:02.590]]></field>
<field number="150"><![CDATA[0]]></field>
<field number="151"><![CDATA[200]]></field>
</body>
<trailer>
<field number="10"><![CDATA[123]]></field>
</trailer>
</message>
Many of the header values have been changed:
Field 9 from 257 to 258.
Field 34 from 2 to 71.
Field 49 from "SCTC" to "DBSI"
Field 52 from 20110518-19:39:08.402 to CDATA[20110518-19:39:02.591