Обновить
0
Сергей Асеев@Serg046

.net

Отправить сообщение
Так ведь конструктор ViewModel, выходит, все равно будет содержать весь этот цирк. Это никак не решает проблему. Чисто технически инжектировать даже в 100 зависимостей конструктора не проблема. Но вод SRP будет злостно нарушен.
witer1:
<?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>

writer2:
<?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>
Это у вас игра такая? Я же реально ответа не знал, потому и спросил…
Это сериализуется нормально
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());
Какой именно случай?
Сейчас запустил это
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; }
}

Вывод:
true
false
Почему нельзя использовать nullable-тип из коробки, для которого даже есть красивый синтаксис (int? etc)?
Ну разве что кто-то запустит непотокобезопасный код. Мне просто было интересно все это воспроизвести, практической пользы от этого мало.

Информация

В рейтинге
Не участвует
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Дата рождения
Зарегистрирован
Активность