我们的 asp.net 核心应用程序中有一个接受dynamic
对象的 POST 操作。
[HttpPost]
public Task<ActionResult> SubmitAsync(dynamic unitOfWork)
我们希望将此 POST 操作转换为 gRPC 服务器,并且希望继续dynamic
在 gRPC 服务中接收对象。dynamic
gRPC protobuf 文件定义中的 C# 定义等价物是什么?或者,如果这无法实现,那么接收动态对象的最佳方式是什么?
我们的 asp.net 核心应用程序中有一个接受dynamic
对象的 POST 操作。
[HttpPost]
public Task<ActionResult> SubmitAsync(dynamic unitOfWork)
我们希望将此 POST 操作转换为 gRPC 服务器,并且希望继续dynamic
在 gRPC 服务中接收对象。dynamic
gRPC protobuf 文件定义中的 C# 定义等价物是什么?或者,如果这无法实现,那么接收动态对象的最佳方式是什么?
这不是现在的事情。在 protobuf 方面,Any
是最接近的东西,但我还没有在 protobuf-net 中实现它(它在我的短期添加列表中)。protobuf-net 中遗留的“动态类型”功能(发送类型元数据)正在被积极淘汰,Any
成为首选路线,因为它允许跨平台使用并且没有相同的元数据依赖关系。
不过,坦率地说,我可能会说“不要这样做”;相反,更喜欢oneof
; 您实际上的意思不太可能是“任何事情”-您可能只是指“我期望的这些事情之一,但我不知道是哪个”,并oneof
表达了这种意图。更多:protobuf-net通过实现继承oneof
,所以一个不错的选择是:
[ProtoContract]
[ProtoInclude(1, typeof(FooRequest))]
[ProtoInclude(2, typeof(BarRequest))]
public abstract class RequestBase {}
[ProtoContract]
public class FooRequest {}
[ProtoContract]
public class BarRequest {}