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);
Since serialization support has been dropped in version 7 some help needs to be provided.
For XML serialization a record
XmlSerializableMoneywill be provided for use in DTOs. It will be convertible to and fromMoneyand will provide facilities to either create or modifyXmlAttributeOverridesto pass to aXmlSerializerinstance to reshape how theXmlSerializableMoneyis XML serialized.