internal void WriteXml (XmlWriter writer, DiscoveryVersion version)
{
if (writer == null)
throw new ArgumentNullException ("writer");
// standard members
if (Address != null)
Address.WriteTo (AddressingVersion.WSAddressing10, writer);
writer.WriteStartElement ("d", "Types", version.Namespace);
int p = 0;
foreach (var qname in ContractTypeNames)
if (writer.LookupPrefix (qname.Namespace) == null)
writer.WriteAttributeString ("xmlns", "p" + p++, "http://www.w3.org/2000/xmlns/", qname.Namespace);
writer.WriteValue (ContractTypeNames);
writer.WriteEndElement ();
if (Scopes.Count > 0) {
writer.WriteStartElement ("Scopes", version.Namespace);
writer.WriteValue (Scopes);
writer.WriteEndElement ();
}
if (ListenUris.Count > 0) {
writer.WriteStartElement ("XAddrs", version.Namespace);
writer.WriteValue (ListenUris);
writer.WriteEndElement ();
}
writer.WriteStartElement ("MetadataVersion", version.Namespace);
writer.WriteValue (Version);
writer.WriteEndElement ();
// non-standard members
foreach (var ext in Extensions)
ext.WriteTo (writer);
}