Поскольку это перечисляет через поля объекта, не индексы. Можно получить значение с индексом "длина", и я сомневаюсь, что Вы хотите это.
Попробуйте добавить:
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 .