using System.Xml.Serialization;
public static void Main()
var serializer = new XmlSerializer(typeof(AdHocQuery));
var sep = new string ('-', 40);
Console.WriteLine("1. using StringWriter (UTF16) \n");
using var writer = new StringWriter();
serializer.Serialize(writer, obj);
var xml = writer.ToString();
Console.WriteLine("2. using custom StringWriter (UTF8)\n");
using var writer = new Utf8StringWriter();
serializer.Serialize(writer, obj);
var xml = writer.ToString();
Console.WriteLine("3. using MemoryStream (UTF8)\n");
using var ms = new MemoryStream();
using var sw = new StreamWriter(ms);
serializer.Serialize(sw, obj);
using var sr = new StreamReader(ms);
var xml = sr.ReadToEnd();
public string Name { get; set; }
public class Utf8StringWriter : StringWriter
public override Encoding Encoding => Encoding.UTF8;