この質問への回答のように実装したいくつかのタイプセーフな列挙型をシリアル化しようとしています。たとえば、(リンクした回答から) への参照を含むオブジェクトをシリアル化する場合FORMS
、逆シリアル化時に static フィールドへの参照を復元したいと思いますFORMS
。
私には解決策がありますが、タイプセーフな列挙型を含むクラスに追加する必要があるため、それはちょっとくだらないようです。コールバックを使用して、列挙型のvalue
フィールドを保存および取得するだけです。
public class SomethingContainingAnAuthenticationMethod
{
[ProtoMember(1)]
public int AuthenticationMethodDataTransferField { get; set; }
public AuthenticationMethod AuthenticationMethod { get; set; }
[ProtoBeforeSerialization]
public void PopulateDataTransferField()
{
AuthenticationMethodDataTransferField = AuthenticationMethod.value;
}
[ProtoAfterDeserialization]
public void PopulateAuthenticationMethodField()
{
AuthenticationMethod = AuthenticationMethod.FromInt(AuthenticationMethodDataTransferField);
}
}
他のアイデアは大歓迎です。