using System.Xml.Serialization;
public static void Main(string[] args)
using (var memoryStream = new MemoryStream())
using (var streamWriter = new StreamWriter(memoryStream))
var xmlSerializer = new XmlSerializer(typeof(Outer));
xmlSerializer.Serialize(streamWriter, new Outer());
var result = XElement.Parse(Encoding.ASCII.GetString(memoryStream.ToArray()));
Console.WriteLine(result);
[XmlRoot(ElementName = "Outer_X")]
[XmlElement(ElementName = "Inner_X")]
public Inner InnerItem { get; set; } = new Inner();