gpt4 book ai didi

c# - C# 中的 Protocol Buffer 和类型安全枚举

转载 作者:行者123 更新时间:2023-11-30 22:23:33 25 4
gpt4 key购买 nike

我正在尝试序列化我实现的一些类型安全枚举,例如 the answer to this question .当我序列化一个包含引用的对象时,比方说,FORMS (根据我链接的答案),我想在反序列化时恢复对静态字段的引用 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);
}
}

任何其他想法将不胜感激。

最佳答案

根据链接示例中的答案,最简单的方法可能是:

[ProtoContract]
public class SomethingContainingAnAuthenticationMethod
{
[ProtoMember(1)]
private int? AuthenticationMethodDataTransferField {
get { return AuthenticationMethod == null ? (int?)null
: AuthenticationMethod.Value; }
set { AuthenticationMethod = value == null ? null
: AuthenticationMethod.FromInt(value.Value); }
}

public AuthenticationMethod AuthenticationMethod { get; set; }
}

这避免了额外的字段和任何回调。类似的事情也可以通过代理类型来完成,但上面的方法应该适用于大多数简单的情况。

关于c# - C# 中的 Protocol Buffer 和类型安全枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com