Некоторые из моих 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>
В качестве альтернативы, я могу прибегнуть к наследованию или коллекции с одним элементом,но ни один из этих вариантов не обеспечивает чистую модель программирования.