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