忽略C#9记录XmlAttribute序列化属性
在这个使用C#记录而不是类的示例中,当使用标准XmlSerializer进行序列化时,XmlAttribute属性被忽略。为什么会这样忽略C#9记录XmlAttribute序列化属性,c#,c#-9.0,C#,C# 9.0,在这个使用C#记录而不是类的示例中,当使用标准XmlSerializer进行序列化时,XmlAttribute属性被忽略。为什么会这样 public record Person ( string Name, [XmlAttribute("dte_created")] DateTime CreatedAt ) { // parameterless ctor required for xml serializer publ
public record Person (
string Name,
[XmlAttribute("dte_created")]
DateTime CreatedAt
) {
// parameterless ctor required for xml serializer
public Person() : this(null, DateTime.MinValue) {}
};
问题是我使用位置语法来定义记录,而生成的auto属性不知道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);
您需要指示编译器使用属性:
设置属性:
public record Person([property: XmlAttribute("dte_created")]DateTime CreatedAt);
或者只使用
[property:Attribute]
语法