zoukankan      html  css  js  c++  java
  • Grpc对象转proto代码工具

    Grpc对象转proto代码工具

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

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

    1. 安装nuget包:CRL.Class2Proto
    2. using CRL.Class2Proto;

    定义标准接口代码

    [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文件

    var convertInfo = ClassConvert.Convert(System.Reflection.Assembly.GetAssembly(typeof(ClassTest)));
    convertInfo.ForEach(b => b.CreateCode());
    

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

    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;
    }
    
  • 相关阅读:
    Contest Record
    Work at DP
    波兰题目补全计划
    BZOJ #3746: [POI2015]Czarnoksiężnicy okrągłego stołu 动态规划
    【HEOI 2018】制胡窜
    【HEOI 2018】林克卡特树
    省选之前的未完成的计划(截至到省选)
    小学半平面交
    小学扩展欧拉定理
    【复习】高斯消元解图上期望概率
  • 原文地址:https://www.cnblogs.com/hubro/p/14962519.html
Copyright © 2011-2022 走看看