Подавите типы нулевого значения от того, чтобы быть испускаемым XmlSerializer

Поскольку это перечисляет через поля объекта, не индексы. Можно получить значение с индексом "длина", и я сомневаюсь, что Вы хотите это.

63
задан Ben Griswold 18 August 2009 в 20:55
поделиться

1 ответ

Попробуйте добавить:

public bool ShouldSerializeAmount() {
   return Amount != null;
}

Есть ряд шаблонов, распознаваемых частями каркаса. Для информации: XmlSerializer также ищет public bool AmountSpecified {get; set;} .

Полный пример (также переключение на десятичное ):

using System;
using System.Xml.Serialization;

public class Data {
    public decimal? Amount { get; set; }
    public bool ShouldSerializeAmount() {
        return Amount != null;
    }
    static void Main() {
        Data d = new Data();
        XmlSerializer ser = new XmlSerializer(d.GetType());
        ser.Serialize(Console.Out, d);
        Console.WriteLine();
        Console.WriteLine();
        d.Amount = 123.45M;
        ser.Serialize(Console.Out, d);
    }
}

Дополнительная информация о ShouldSerialize * в MSDN .

132
ответ дан 24 November 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: