Ответ 1
Уточнение: большая часть этого ответа относится к предварительно заданному вопросу, где false
передано RuntimeTypeModel.Add(...)
Я использовал ваш точный код (я понял, что это было в namespace ProtobufTest
, но остальное было копией/вставкой из вопроса) с r2.0.0.640 (текущее развертывание NuGet), и я получаю:
package ProtobufTest;
message MyEntity {
optional string PropertyA = 1;
optional int32 PropertyB = 2 [default = 0];
}
Кроме того, вы получите тот же результат, даже если вы удалите строку RuntimeTypeModel.Default.Add(...)
.
Мне непонятно, почему вы видите что-то другое - можете ли вы уточнить:
- какая версия protobuf-net вы используете именно
- если те
[DataContract]
/[DataMember]
атрибуты - это тегиSystem.Runtime.Serialization.dll
или ваши собственные (извините, если это кажется странным вопросом)
Чтобы полностью ответить на вопрос: если у вас не было никаких атрибутов (и те, которые у вас есть, все в порядке), вы также можете сделать:
RuntimeTypeModel.Default.Add(typeof(MyEntity), false)
.Add(1, "PropertyA")
.Add(2, "PropertyB");
который сконфигурировал бы PropertyA
как ключ 1 и PropertyB
как ключ 2.