Десериализация свойств DefaultValue

Я пытаюсь десериализовать поток в объект со свойствами значений по умолчанию, и protobuf-net просто использует эти свойства, когда они отсутствуют в потоке. Нужно ли мне перед десериализацией вручную устанавливать для всех свойств значения по умолчанию или что?


person GromHellscream    schedule 20.05.2013    source источник


Ответы (1)


Поведение DefaultValues (не только в protobuf-net — в System.ComponentModel вообще, например PropertyGrid, PropertyDescriptor и т. д.) заключается в том, что оно используется для обозначения вещей, которые не нужны. должны быть сериализованы, потому что они будут автоматически установлены по умолчанию на одно и то же значение. Таким образом, предполагается, что если ваш код аннотирует DefaultValue, то ваш код будет назначать эти значения по умолчанию. Это может быть конструктор, инициализатор поля или обратный вызов перед десериализацией (поддерживаются все 4 стандартные точки обратного вызова).

Технически для библиотеки не было бы невозможно явно присвоить эти значения до десериализации, но просто: это не то, что закодировано в настоящее время.

person Marc Gravell    schedule 20.05.2013