public class Hat
{
[XmlTextAttribute]
public string Name { get; set; }
[XmlAttribute("Color")]
public string Color { get; set; }
}
var hat1 = new Hat {Name="Cool Hat", Color="Red"};
var hat2 = new Hat {Name="Funky Hat", Color=null};
Это то, что я получаю (обратите внимание на отсутствие атрибута цвета в Funky Hat):
<Hats>
<Hat Color="Red">Cool Hat</Hat>
<Hat>Funky Hat</Hat>
</Hats>
Это то, что я хочу:
<Hats>
<Hat Color="Red">Cool Hat</Hat>
<Hat Color="">Funky Hat</Hat>
</Hats>
Как заставитьСериализатор, чтобы создать пустой атрибут вместо того, чтобы его пропустить?
РЕДАКТИРОВАТЬ:
Оказывается, я идиот и создал пример, который содержит ошибку, потому что я хотел упростить код для примера.
Если значение цвета равно "" (или string.empty), оно фактически сериализуется как пустой атрибут.Тем не менее, у меня действительно было нулевое значение, а не пустая строка - поэтому оно было опущено.
Итак, поведение, которое я хотел, на самом деле уже было поведением созданного мною примера.ребята!