C# では、列挙型に任意の整数値を割り当てることができます。
値が範囲外の列挙型フィールドを持つオブジェクトを (protobuf-net 経由で) シリアル化しようとすると、例外がスローされます: ワイヤー値が列挙型 PersonLevel にマップされていません。
私の enum PersonLevel には Flags 属性がありません。
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public enum PersonLevel
{
Unknown = 1
}
[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
public class Person
{
...
public PersonLevel PersonLevel { get; set; }
...
}
var ms = new MemoryStream();
var person = new Person
{
...
PersonLevel = (PersonLevel) 500
...
};
Serializer.Serialize(ms, person); //No wire-value is mapped to the enum PersonLevel
ビジネスオブジェクト(おそらくprotobuf属性)を変更せずにそれを行う機能はありますか?