Округление значений при сериализации при использовании XmlSerializer для сериализации в строку XML - PullRequest
1 голос
/ 16 марта 2012

Я использую XmlSerializer для сериализации моей объектной модели в XML.В настоящий момент, непосредственно перед сериализацией, я рекурсивно просматриваю всю свою модель и округляю любые значения до 1 или 2 десятичных разрядов в зависимости от некоторого свойства.

Есть ли способ сделать это путем создания подкласса XmlSerializer.Я попытался переопределить метод защищенного переопределения void Serialize (object o, XmlSerializationWriter Writer), но он никогда не вызывался.

Вот мой блок кода, который выполняет сериализацию:

 StringWriter writer = new Utf8StringWriter();

 XmlWriter xml = XmlWriter.Create(writer, new XmlWriterSettings() { Encoding = writer.Encoding });

 new MySubClassSerializer(engine.GetType()).Serialize(xml, engine);

Мои подклассыСериализатор на данный момент ничего не делает, только подклассы к своему родителю.

1 Ответ

1 голос
/ 16 марта 2012

Что если вы поместите эти значения в другое свойство? Как это:

[XmlIgnore()]
public float SomeValue { get; set; }

[XmlAttribute("SomeValue")]
public float SomeValueRounded
{
    get { return (float)Math.Round(SomeValue, 2); }
    set { SomeValue = value; }
}
...