C# gRPC功能是否可能过载?
我正在用C中的gRPC启动一个小的示例项目,当我实现这个原型文件时,当我键入相同名称的函数但不同的参数时,会出现一些错误C# gRPC功能是否可能过载?,c#,grpc,C#,Grpc,我正在用C中的gRPC启动一个小的示例项目,当我实现这个原型文件时,当我键入相同名称的函数但不同的参数时,会出现一些错误 我可以在proto文件中重载函数吗?否,protobuf中服务中的RPC名称必须是唯一的 实现有点像重载的最简单方法是使用单个请求类型和单个响应类型,但在顶层使用oneof来指定一个子请求或子响应。然后,您可以很容易地在C代码中创建另一个分部类,并在其中编写重载,这基本上是从子请求消息中适当地创建请求,然后提取适当的子响应 或者,如果您的RPC真的只想做一件事,并且您只想让它
我可以在proto文件中重载函数吗?否,protobuf中服务中的RPC名称必须是唯一的 实现有点像重载的最简单方法是使用单个请求类型和单个响应类型,但在顶层使用oneof来指定一个子请求或子响应。然后,您可以很容易地在C代码中创建另一个分部类,并在其中编写重载,这基本上是从子请求消息中适当地创建请求,然后提取适当的子响应 或者,如果您的RPC真的只想做一件事,并且您只想让它更容易以不同的方式调用,这是最合适的重载形式,那么您可以只添加分部类。例如,如果您有这样的服务:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
。。。然后,如果生成的代码如下所示:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
公共部分类MathClient
{
公共虚拟AddResponse addrequest请求,CallOptions选项
{
...
}
公共虚拟异步调用AddAsyncAddRequest请求,
headers=null,DateTime?deadline=null,
CancellationToken CancellationToken=默认值
{
...
}
公共虚拟异步调用AddAsync
AddRequest请求,CallOptions选项
{
...
}
}
。。。然后您可以编写自己的部分类,如下所示:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
公共部分类MathClient
{
公共整数加法x,整数y
{
var request=newaddrequest{X=X,Y=Y};
var-response=Addrequest;
返回响应。结果;
}
//类似地,异步
}
否,protobuf中服务中的RPC名称必须是唯一的 实现有点像重载的最简单方法是使用单个请求类型和单个响应类型,但在顶层使用oneof来指定一个子请求或子响应。然后,您可以很容易地在C代码中创建另一个分部类,并在其中编写重载,这基本上是从子请求消息中适当地创建请求,然后提取适当的子响应 或者,如果您的RPC真的只想做一件事,并且您只想让它更容易以不同的方式调用,这是最合适的重载形式,那么您可以只添加分部类。例如,如果您有这样的服务:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
。。。然后,如果生成的代码如下所示:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
公共部分类MathClient
{
公共虚拟AddResponse addrequest请求,CallOptions选项
{
...
}
公共虚拟异步调用AddAsyncAddRequest请求,
headers=null,DateTime?deadline=null,
CancellationToken CancellationToken=默认值
{
...
}
公共虚拟异步调用AddAsync
AddRequest请求,CallOptions选项
{
...
}
}
。。。然后您可以编写自己的部分类,如下所示:
service Math {
rpc Add (AddRequest) returns (AddResponse) {}
}
message AddRequest {
int32 x = 1;
int32 y = 2;
}
message AddResponse {
int32 result;
}
公共部分类MathClient
{
公共整数加法x,整数y
{
var request=newaddrequest{X=X,Y=Y};
var-response=Addrequest;
返回响应。结果;
}
//类似地,异步
}
谢谢我现在看得更清楚了。谢谢!我现在看得更清楚了。