Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Double, int, bool — это типы значений (Value Types), и они не могут принимать значение null; в результате int свойства сериализуются значением по умолчанию (читай, если int свойству не присвоили значение, сериализуется 0).
minOccurs="0" и паттерн *Specified, или просто в статье не упомянули?[XmlElement]
public XmlDecimalWrapper NullableDecimal{get;set;}
[XmlElement]
public decimal NullableDecimal{get;set;}
[XmlIgnore]
public bool NullableDecimalSpecified{get{ AnyAdditionalLogicHere;}}
class Program
{
static void Main(string[] args)
{
var xml1 = XDocument.Parse("<Test><Prop>5</Prop></Test>");
var test1 = new XmlSerializer(typeof(Test)).Deserialize(xml1.CreateReader()) as Test;
var xml2 = XDocument.Parse("<Test></Test>");
var test2 = new XmlSerializer(typeof(Test)).Deserialize(xml2.CreateReader()) as Test;
Console.WriteLine(test1.Prop.HasValue);
Console.WriteLine(test2.Prop.HasValue);
}
}
public class Test
{
public int? Prop { get; set; }
}var test1 = new Test() { Prop = 5 };
var test2 = new Test();
var writer1 = new StringWriter();
var writer2 = new StringWriter();
new XmlSerializer(typeof(Test)).Serialize(writer1, test1);
new XmlSerializer(typeof(Test)).Serialize(writer2, test2);
Console.WriteLine(writer1.ToString());
Console.WriteLine(writer2.ToString());
xsi:nil? У меня просто сейчас нет возможности проверить.<?xml version="1.0" encoding="utf-16"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Prop>5</Prop>
</Test>
<?xml version="1.0" encoding="utf-16"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Prop xsi:nil="true" />
</Test>
public class EnumWrapper<T> where T : Enum
Как приготовить DTO?