忽略C#9记录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

在这个使用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) {}
};

问题是我使用位置语法来定义记录,而生成的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]
语法