我正在尝试序列化一些我实现的类型安全枚举,就像这个问题的答案一样。当我序列化一个包含对FORMS
(来自我链接的答案)的引用的对象时,我想在反序列化时恢复对 static field 的引用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);
}
}
任何其他想法将不胜感激。