如何解决如何在 C# 中为 gRPC 创建正确的自动生成代码?
我在 C# 项目中创建了一个 proto 文件,并尝试通过构建解决方案来自动生成 C# 代码。 但是,扩展名 grpc.cs 下的文件有问题。
'''
/// <summary>Creates a new client for Greeter</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public GreeterClient(grpc::Channel channel) : base(channel)
{
}
'''
上面的片段来自示例,其中公共 GreeterClient 具有参数 (grpc::Channel channel) 但在下面的片段中,它是 (grpc::ChannelBase channel)
'''
/// <summary>Creates a new client for samples</summary>
/// <param name="channel">The channel to use to make remote calls.</param>
public samplesClient(grpc::ChannelBase channel) : base(channel)
{
}
'''
如何配置和生成grpc.cs文件,使参数为(grpc::Channel channel)
解决方法
我不确定你在做什么(...试图自动生成...
这是 .NET Framework 项目的示例,.NET Core 创建的略有不同 - 这是 .NET Core 入门的绝佳资源:ASP.NET Core gRPC for WCF Developers
通常你做什么
- 创建项目并安装相关的 Nuget 包:
Grpc
、Grpc.Core
以及最重要的Grpc.Tools
包 - 添加新文件。随意命名,但扩展名必须是
.proto
- 在这个 proto 文件中填充一些数据,例如:
syntax = "proto3";
option csharp_namespace = "MyNamespace";
...
...
- 右键单击此文件并选择
Properties
- 在“属性”面板中,选择
Protobuf
作为Build action
。所以它应该是这样的:
- 重新构建解决方案
- 添加另一个 C# 文件,随意命名
- 在此 C# 文件中,开始引用您在
proto
文件中创建的结构。喜欢:
MyNamespace.MyServer server = new MyNamespace.MyServer()
但实际上您应该从 ptotobuf
为您创建的基类继承,如下所示:
public class GrpcImplementationClass: MyNamespace.MyServer.MyServerBase
{
public override MyFunction()
{
...
...
附言Youtube
上有很多针对初学者的教程版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。