You could use the XMLSerializer:
var aSerializer = new XmlSerializer(typeof(A));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
aSerializer.Serialize(sw, new A()); // pass an instance of A
string xmlResult = sw.GetStringBuilder().ToString();
For this to work properly you will also want xml annotations on your types to make sure it is serialized with the right naming, i.e.:
public enum NSystem { A = 0, B = 1, C = 2 }
[Serializable]
[XmlRoot(ElementName = "A")]
Class A
{
//Few Properties of Class A
[XmlArrayItem("ListOfB")]
List<B> list1;
[XmlArrayItem("ListOfC")]
List<C> list2;
NSystem NotSystem { get; set; }
}
Edit:
Enum
properties are serialized by default with the name of the property as containing XML element and its enum value as XML value, i.e. if the property NotSystem
in your example has the value C
it would be serialized as
<NotSystem>C</NotSystem>
Of course you can always change the way the property is serialized by doing a proper annotation, i.e using [XmlAttribute]
so it's serialized as an attribute, or [XmlElement("Foobar")]
so it's serialized using Foobar
as element name. More extensive documentation is available on MSDN, check the link above.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…