У меня есть свойство, определенное как:
[XmlArray("delete", IsNullable = true)]
[XmlArrayItem("contact", typeof(ContactEvent)),
XmlArrayItem("sms", typeof(SmsEvent))]
public List<Event> Delete { get; set; }
Если в списке <> Удалить нет элементов
<delete />
испускается. Если для List <> Delete установлено значение null
<delete xsi:nil="true" />
испускается. Есть ли способ использовать атрибуты, чтобы удалить элемент delete, если в коллекции нет элементов?
Грег - Отлично, я даже не читал документацию IsNullable, просто предполагал, что она сигнализирует об этом как о не нужной.
Роб Купер - Я пытался избежать ISerializable, но предложение Грегса работает. Я столкнулся с проблемой, которую вы описали в (1), я сломал кучу кода, просто возвратив ноль, если коллекция была нулевой длины. Чтобы обойти это, я создал класс EventsBuilder (класс, который я сериализирую, называется Events), который управлял всем временем жизни / созданием базовых объектов класса Events, который выплевывает классы Events для сериализации.