gpt4 book ai didi

c# - 如何在与 C# 相同的 gRPC 中声明小数对象

转载 作者:行者123 更新时间:2023-12-04 14:09:41 25 4
gpt4 key购买 nike

我们正在将现有的 REST API 服务转换为 gRPC 核心。在迁移现有类时,我们了解到 gRPC 没有十进制数据类型。我们在 C# 中有一个类定义为

public class SalarySchedule
{
public decimal Salary { get; set; }
public DateTime? SalaryDate { get; set; }
}

我们在 proto 文件中将其实现为

message SalarySchedule
{
// TODO: How to define this double to decimal
double Salary = 1;
google.protobuf.Timestamp SalaryDate =2;
}

目前,我们使用double 作为Salary 数据类型。但这会导致内部计算出现问题。

能否请您指导我们,我们如何将其定义为 gRPC 中的小数?

最佳答案

有一个提议的 Money 类型进行了一些讨论,但没有作为“众所周知的”protobuf 类型出现。

现在,老实说,我建议只使用 string。我不知道您使用的是 Google 实现还是 protobuf-net.Grpc(内置但允许“代码优先”使用),但如果您使用的是后者 (protobuf-net.Grpc) 和 protobuf -net V3,你可以使用[CompatibilityLevel(...)]指定级别 300 或更高,它会将 decimal 视为用于序列化目的的 string。如果您使用 Google 的 .proto 方法,我会手动应用转换,确保使用不变的文化。

关于c# - 如何在与 C# 相同的 gRPC 中声明小数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65379407/

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