在类型之间共享一组xmlelementattribute修饰的字段

本文关键字:xmlelementattribute 一组 字段 之间 类型 共享 | 更新日期: 2023-09-27 18:16:13

我的几个xml可序列化类型共享相同的属性集,我想将它们重构为一个类型,以删除重复,如下所示。

public class RequestHeader
{
    [XmlElement]
    public string UserId { get; set; }
    [XmlElement]
    public string RequestId { get; set; }
}
[XmlRoot]
public class RequestType
{
    public RequestHeader Header { get; set; }
    // ... other fields ...
}
[XmlRoot]
public class AnotherRequestType
{
    public RequestHeader Header { get; set; }
    // ... other fields ...
}

当序列化这些类型中的任何一个时,序列化器将Header属性的内容封装在<Header>元素中。是否有一个属性可以修饰Header属性,使父<Header>元素不呈现?在序列化集合属性时,我已经成功地完成了这一点,但我不确定它是否可以用单个元素完成。

<RequestHeader>
    <Header>                         <!-- omit this -->
        <UserId>user</UserId>
        <RequestId>123</RequestId>
    </Header>                        <!-- omit this -->
</RequestHeader>

或者,我可以求助于继承或一个元素的集合,但是这两种选择都不能提供一个干净的编程模型。

在类型之间共享一组xmlelementattribute修饰的字段

我会说你在RequestHeader类上实现IXmlSerializable,并使用writer手动编写属性,而不将它们包装在一些外部标记中。

为了进一步解决这个问题,我最后引入了一个基类来存储xml可序列化类型的公共元素。在扫描了控制xml序列化的属性集,但没有找到合适的机制之后,我认为这似乎是解决重复问题的唯一机制。

相关文章:
  • 没有找到相关文章