Настройки писателя являются функцией самого внешнего писателя;Вы должны применить это к коду, который создает файл, т.е.
using(var file = File.Create("file.txt"))
using(var writer = XmlWriter.Create(file, settings))
{
serializer.Serialize(writer, me);
}
дополнительно, тогда вам не нужно для реализации IXmlSerializable
.Вы не можете сделать это на внутреннем уровне - это слишком поздно.
Например:
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Employee
{
[XmlAttribute] public string Name { get; set; }
[XmlAttribute] public int Age { get; set; }
}
class Program
{
static void Main()
{
var settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
var me = new Employee {
Name = "Vyacheslav", Age = 23
};
var serializer = new XmlSerializer(typeof (Employee));
using (var file = File.Create("file.txt"))
using (var writer = XmlWriter.Create(file, settings))
{
serializer.Serialize(writer, me);
}
}
}
и если вам не нужны дополнительные пространства имен, тогда:
var ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(writer, me, ns);
который генерирует файл:
<Employee Name="Vyacheslav" Age="23" />