前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Grpc对象转proto代码工具

Grpc对象转proto代码工具

原创
作者头像
用户8604107
修改2021-07-02 14:25:46
6610
修改2021-07-02 14:25:46
举报
文章被收录于专栏:crl .net

Grpc对象转proto代码工具

虽然Grpc.Tools可以将proto文件自动生成代理类,但是proto文件得手敲,还容易出错,如果接口比较复杂,定义比较多,这就很头疼了

为了解决这个问题Class2Proto诞生了,使用标准C#对象转换成proto文件,不管是新写的接口,还是老的API接口转Grpc,都没问题

  1. <u>安装nuget包:CRL.Class2Proto</u>
  2. <u>using CRL.Class2Proto;</u>

定义标准接口代码

代码语言:txt
复制
[ProtoServiceAttribute("protoTest", "ClassTestAction")]
public interface ClassTestAction
{
    ClassTest getObj(TestObj a);
    //ClassTest getObj2(TestObj a);
    Request getObj3(TestObj2<Request> a);
    TestObj2<List<Request>> getObj4(TestObj2<List<Request>> a);
}

运行转换方法生成proto文件

代码语言:txt
复制
var convertInfo = ClassConvert.Convert(System.Reflection.Assembly.GetAssembly(typeof(ClassTest)));
convertInfo.ForEach(b => b.CreateCode());

程序目录Protos成生了protoTest.proto文件

代码语言:txt
复制
syntax = "proto3";
option csharp_namespace = "gRPC.gRpcClient.protoTest";
package protoTest;
service ClassTestAction {
    rpc getObj(TestObjDTO) returns (ClassTestDTO);
    rpc getObj3(TestObj2_RequestDTO) returns (RequestDTO);
    rpc getObj4(TestObj2_l_RequestDTO) returns (TestObj2_l_RequestDTO);
}
message StatusDTO {
    ok = 0;
    fail = 1;
}
message TestObjDTO {
    string Id = 1;
}
message ClassTestDTO {
    string Name = 1;
    int32 nullableValue = 2;
    StatusDTO Status = 3;
    TestObjDTO Data = 4;
    repeated string Name2 = 5;
    repeated TestObjDTO Data2 = 6;
    map<string, TestObjDTO> Data3 = 7;
    string time = 8;
    double decimalValue = 9;
    string Id = 10;
}
message RequestDTO {
}
message TestObj2_RequestDTO {
    string Id = 1;
    RequestDTO data = 2;
}
message TestObj2_l_RequestDTO {
    string Id = 1;
    repeated RequestDTO data = 2;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Grpc对象转proto代码工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档