Хммм .... Честно говоря, я не знаю о проблемах запутывания с перечислениями; Мне придется подготовить контрольный пример для расследования.
Было бы полезно, если бы вы могли сказать мне, какой инструмент запутывания вы используете. Это также поможет увидеть, как вы указываете значение по умолчанию (то есть определение свойства).
Обратите внимание, что он действительно учитывает [ProtoEnum]
в случае перечислений ([ProtoContract]
может использоваться для присвоения ему имени, но это не используется, если вы не генерируете файлы .proto, что очень маловероятно) - но я не ожидаю, что это повлияет на что-либо в этом случае (это используется для изменения значения «на проводе» на значения, отличные от .NET). Что касается примеров; Признаюсь, я отстал от документации, но перечисление тестов здесь показывает типичное использование.
Я зарегистрировал это как Issue 59 ; если бы вы могли сообщить мне подробности выше (либо здесь, либо по электронной почте - см. мой профиль), я постараюсь провести расследование.
(если вы не знали, я автор protobuf-net)
Я попробовал следующее (используя .NET Reactor), и оно работало нормально ... неявное значение по умолчанию нуля для значений перечисления является наиболее вероятным. Можете ли вы предоставить тестовый пример, который показывает, что он не работает?
using System;
using ProtoBuf;
[ProtoContract]
class Foo {
static void Main() {
Foo foo = new Foo { Bar = MyEnum.B };
Console.WriteLine(foo.Bar);
Foo clone = Serializer.DeepClone(foo);
Console.WriteLine(clone.Bar); // Expect "B"
}
[ProtoMember(1)]
public MyEnum Bar { get; set; }
}
enum MyEnum { A, B, C }