using System.Xml.Serialization;
using System.Runtime.Serialization;
public static void Main()
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(ToSerialize), "A", new XmlAttributes { XmlIgnore = true, XmlElements = { new XmlElementAttribute(){ Order=1 } } });
overrides.Add(typeof(ToSerialize), "B", new XmlAttributes { XmlIgnore = true, XmlElements = { new XmlElementAttribute(){ Order=2 } } });
overrides.Add(typeof(ToSerialize), "C", new XmlAttributes { XmlIgnore = false, XmlElements = { new XmlElementAttribute(){ Order=3 } } } );
overrides.Add(typeof(ToSerialize), "G", new XmlAttributes { XmlIgnore = false, XmlAnyElements = { new XmlAnyElementAttribute(){ Order=4 } } } );
overrides.Add(typeof(ToSerialize), "D", new XmlAttributes { XmlIgnore = false, XmlElements = { new XmlElementAttribute(){ Order=5 } } } );
overrides.Add(typeof(ToSerialize), "H", new XmlAttributes { XmlIgnore = false, XmlAnyElements = { new XmlAnyElementAttribute(){ Order=6 } } } );
overrides.Add(typeof(ToSerialize), "E", new XmlAttributes { XmlIgnore = false, XmlElements = { new XmlElementAttribute(){ Order=7 } } } );
using(var stream = new MemoryStream()){
XmlSerializer xmlSer = new XmlSerializer(typeof(ToSerializeA), overrides);
new ToSerializeA(){ NoExtraComment = true }
using (var reader = new StreamReader(stream, Encoding.UTF8))
string value = reader.ReadToEnd();
Console.WriteLine(value);
public partial class ToSerialize
public const string MSG_SERIALIZABLE = "Serializable";
public const string MSG_NON_SERIALIZABLE = "Non-Serializable";
public string A { get; set;} = MSG_SERIALIZABLE;
public virtual string B { get; set;} = MSG_SERIALIZABLE;
public string C { get; set;} = MSG_NON_SERIALIZABLE;
public virtual string D { get; set;} = MSG_NON_SERIALIZABLE;
public partial class ToSerialize
public bool NoExtraComment = false;
public string E { get; set;} = MSG_SERIALIZABLE;
public string F { get; set;} = MSG_NON_SERIALIZABLE;
[XmlAnyElement(nameof(G))]
[XmlIgnore, SoapIgnore, IgnoreDataMember]
public XmlCharacterData G {
get { return new XmlDocument().CreateComment("G (Comment)"); }
[XmlAnyElement(nameof(H))]
[XmlIgnore, SoapIgnore, IgnoreDataMember]
public XmlCharacterData H {
new XmlDocument().CreateComment("H (Comment)") :
new XmlDocument().CreateSignificantWhitespace("");
public class ToSerializeA: ToSerialize
public new string A { get; set;} = MSG_NON_SERIALIZABLE;
public override string B { get; set;} = MSG_NON_SERIALIZABLE;
public new string C { get; set;} = MSG_SERIALIZABLE;
public override string D { get; set;} = MSG_SERIALIZABLE;