2017-01-17 4 views
1
[Required] 
    [DefaultValue(-1)] 

    public int MvcUserId { get; set; } 

когда я установил MvcUserId = -1; , но я получу MvcUserId = 0; если я использую json serlize, все будет в порядке.protobuf-net не может отправить отрицательный номер

+0

'[DefaultValue (-1)]' означает, что 'MvcUserId' имеет значение по умолчанию -1, так что конкретное значение не нужно отправлять по проводу. Это означает, что вам нужно установить его в свой конструктор. См. [Deserialization свойства DefaultValue] (http://stackoverflow.com/a/16650231/3744182). – dbc

+0

Возможный дубликат [Deserialization свойства DefaultValue] (http://stackoverflow.com/questions/16649924/defaultvalue-properties-deserialization) – dbc

+0

@dbc DefaultValue только для Entity Framework, независимо от protobuf-NET. –

ответ

0

Вы должны фактически применять по умолчанию:

[Required] 
[DefaultValue(-1)] 
public int MvcUserId { get; set; } = -1; 

Без этого Protobuf-сети игнорирует значение при отправке (потому что это по умолчанию), а получать нет ничего обработать. protobuf-net предполагает, что ваш код правильно применяет значения по умолчанию.