使用从基类继承的类更改 XmlSerialization 的顺序

change order of xmlserialization with inherited class from base class

提问人:Proliges 提问时间:11/9/2023 最后编辑:CharliefaceProliges 更新时间:11/9/2023 访问量:21

问:

我有 2 个班级。从此基类继承的基类和扩展类。当我想序列化扩展类时,顺序不正确。

public class BaseClass
{
   [XmlElement("B", Order = 2)]
   public string? B { get; init; }

   [XmlElement("C", Order = 3)]
   public string? C { get; init; }
}

public class ExtClass : BaseClass
{
   [XmlElement("A", Order = 1)]
   public string? A { get; init; }
}

我序列化时的输出是:B C A

根据这篇 msdn 文章,这是预期行为,在其他旧链接中,他们建议您可以编写自己的序列化程序来解决此问题。

有没有更简单的解决方案可以解决这个问题?

C# .NET XML 序列化 xmlSerializer

评论

1赞 Zohar Peled 11/9/2023
为什么首先要关心 XML 输出中属性的顺序?
0赞 Proliges 11/9/2023
@ZoharPeled 因为接收方(不是我)希望它们按顺序排列(xsd:sequence),而我无法更改它。
1赞 Charlieface 11/9/2023
您能否显示 XSD 架构,因为标准 XSD 需要扩展类型以为所有新属性添加后缀,而不是交错。
0赞 dbc 11/9/2023
@Proliges - 您的文档链接不是 ,但工作方式相同。请参阅 .NET 序列化排序,了解原因以及一些可能的解决方法。这回答了你的问题吗?因为替代方案是在 上实现,或用一些 DTO 替换。DataContractSerializerXmlSerializerXmlSerializerIXmlSerializableExtClassExtClass

答: 暂无答案