Если вы используете XmlSerializer
с сериализацией по умолчанию (не IXmlSerializable
), тогда действительно: этого нельзя достичь без добавления дополнительного класса, который равен AlertOne
, с атрибутом и [XmlText]
значение.
Если вы реализуете IXmlSerializable
, это должно быть возможно, но это не очень хороший интерфейс для надежной реализации (в частности, десериализация трудна; если она только для записи, то это должно быть хорошо). Лично я бы порекомендовал сопоставление модели DTO с вышеупомянутым дополнительным классом.
Другие инструменты, такие как LINQ-to-XML, конечно, сделали бы это довольно простым, но работали бы по-другому.
Пример подходящего макета DTO:
public class Alerts
{
[XmlElement("AlertOne")]
public Alert AlertOne { get; set; }
}
public class Alert
{
[XmlText]
public int Parameter { get; set; }
[XmlAttribute("Enabled")]
public bool Enabled { get; set; }
}
Конечно, вы можете добавить несколько [XmlIgnore]
проходных членов, которые общаются с внутренним экземпляром.