Вы можете использовать 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();
Чтобы это работало должным образом, вам также понадобятся xml-аннотации для ваших типов, чтобы убедиться, что они сериализуются с правильными именами, т. Е .:
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
свойства сериализуются по умолчанию с именем свойства как содержащего XML-элемент и его перечислимым значением как XML-значение, т. Е. Если свойство NotSystem
в вашем примере имеет значение C
, оно будет сериализовано как
<NotSystem>C</NotSystem>
Конечно, вы всегда можете изменить способ сериализации свойства, выполнив правильную аннотацию, то есть, используя [XmlAttribute]
, чтобы он сериализовался как атрибут, или [XmlElement("Foobar")]
, чтобы он сериализовался, используя Foobar
в качестве имени элемента. Более обширная документация доступна на MSDN, проверьте ссылку выше.