public void WriteExtensionObject(string fieldName, ExtensionObject value)
{
if (value == null || value.Encoding == ExtensionObjectEncoding.None)
{
WriteSimpleField(fieldName, null, false);
return;
}
PushStructure(fieldName);
if (value != null)
{
IEncodeable encodeable = value.Body as IEncodeable;
if (encodeable != null)
{
if (UseReversibleEncoding)
{
WriteExpandedNodeId("TypeId", encodeable.TypeId);
WriteEncodeable("Object", encodeable, null);
}
else
{
encodeable.Encode(this);
}
}
else
{
WriteExpandedNodeId("TypeId", value.TypeId);
if (value.Body != null)
{
if (value.Encoding == ExtensionObjectEncoding.Binary)
{
WriteByteString("Binary", value.Body as byte[]);
}
else if (value.Encoding == ExtensionObjectEncoding.Xml)
{
WriteXmlElement("Xml", value.Body as XmlElement);
}
}
}
}
PopStructure();
}