我正在使用 XmlSerializer 将对象模型序列化为 XML。目前,在序列化之前,我正在反复检查整个模型,并根据某些属性将任何值四舍五入到小数点后 1 或 2 位。
有没有办法通过子类化 XmlSerializer.我尝试重写 protected override 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);
我的子类序列化器目前不执行任何操作,只是对其父级进行子类化。
最佳答案
如果将这些值包装在另一个属性中会怎样?像这样:
[XmlIgnore()]
public float SomeValue { get; set; }
[XmlAttribute("SomeValue")]
public float SomeValueRounded
{
get { return (float)Math.Round(SomeValue, 2); }
set { SomeValue = value; }
}
关于c# - 使用 XmlSerializer 序列化为 XML 字符串时对序列化值进行舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727985/