У меня есть веб-сайт, на котором только несколько человек могут получить к нему доступ, поэтому количество зарегистрированных IP-адресов очень ограничено. Все, что отправлено зарегистрированными «администраторами», отправляется в определенную папку, зависящую от их IP-адреса. Опять же, они не могут получить доступ к веб-сайту через прокси-сервер или что-то еще, потому что разрешен ограниченный диапазон IP-адресов. {[XmlTextAttribute] публичная строка Имя {get; установлен; } [XmlAttribute ("Color")] общедоступная строка Color {get; установлен; } } var hat1 = new Hat {Name = "Cool Hat", Color = "Red"}; ...
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>
Как я могу заставить сериализатор создать пустой атрибут вместо того, чтобы оставить его вне?
Оказывается, я идиот и создал пример, содержащий ошибку, потому что я хотел упростить код для этого примера.
Если значение color равно "" (или string.empty), оно фактически сериализуется как пустой атрибут. Однако у меня действительно было нулевое значение, а не пустая строка - поэтому оно было исключено.
Так что поведение, которое я хотел, на самом деле уже было поведением созданного мной примера.
Извините, ребята!