nmoneys
nmoneys copied to clipboard
Xml Serialization Support
Since serialization support has been dropped in version 7 some help needs to be provided.
For XML serialization a record XmlSerializableMoney
will be provided for use in DTOs. It will be convertible to and from Money
and will provide facilities to either create or modify XmlAttributeOverrides
to pass to a XmlSerializer
instance to reshape how the XmlSerializableMoney
is XML serialized.
public readonly record struct SerializableMoney(decimal Amount, CurrencyIsoCode Currency);
public record MoneyContainerDto([property: XmlAttribute(attributeName: "da_name")]string Name, [property: XmlElement(ElementName = "da_money")]SerializableMoney Money)
{
public MoneyContainerDto() : this(string.Empty, new SerializableMoney()) { }
}
var overrides = new XmlAttributeOverrides();
overrides.Add(typeof(SerializableMoney), new XmlAttributes
{
Xmlns = false,
XmlRoot = new XmlRootAttribute("money")
});
overrides.Add(typeof(SerializableMoney), "Currency", new XmlAttributes
{
XmlElements = { new XmlElementAttribute("currency") }
});
overrides.Add(typeof(SerializableMoney), "Amount", new XmlAttributes
{
XmlElements = { new XmlElementAttribute("amount") }
});
XmlSerializer mcs = new XmlSerializer(typeof(MoneyContainerDto), overrides);