如何解决C# 9 记录 XmlAttribute 序列化属性被忽略
在这个使用 C# 记录而不是类的示例中,当使用标准 XmlSerializer 进行序列化时,将忽略 XmlAttribute 属性。这是为什么?
public record Person (
string Name,[XmlAttribute("dte_created")]
DateTime CreatedAt
) {
// parameterless ctor required for xml serializer
public Person() : this(null,DateTime.MinValue) {}
};
解决方法
问题是我使用位置语法来定义记录并且生成的自动属性不知道 XmlAttribute。但是,我可以通过明确说明如何生成属性来达到相同的效果。像这样:
public record Person (string Name,DateTime CreatedAt) {
[XmlAttribute("dte_created")]
public DateTime CreatedAt { get; init; } = CreatedAt;
// parameterless ctor required for xml serializer
public Person() : this(null,DateTime.MinValue) {}
}
,
在您的代码中,您将属性设置为构造函数参数
public record Person([XmlAttribute("dte_created")]DateTime CreatedAt);
您需要指示编译器使用 property:
设置属性上的属性:
public record Person([property: XmlAttribute("dte_created")]DateTime CreatedAt);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。