【问题标题】:How to include services in .proto file when using auto-generation (Serializer.GetProto<>())使用自动生成时如何在 .proto 文件中包含服务 (Serializer.GetProto<>())
【发布时间】:2020-05-15 00:59:50
【问题描述】:

所以我需要创建一个包含服务和消息的完整 .proto 文件,以完整描述我将要使用的服务之一。我已经找到this post 提到使用 string proto = Serializer.GetProto&lt;YourType&gt;(); 但遗憾的是,在我的服务上使用时,它只会生成一个带有以我的服务命名的“消息”的 proto 文件。

谈谈我下面给出的具体文件示例,有没有办法从 IExampleService.cs 中获取 Example.proto?

[ServiceContract]
public interface IExampleService
{
    Task<ExampleReply> ExampleMethod(ExampleRequest request);
}

[ProtoContract]
public class ExampleRequest
{
    [ProtoMember(1)]
    public string Prop1 { get; set; }

    [ProtoMember(2, DataFormat = DataFormat.WellKnown)]
    public DateTime TimeProp2 { get; set; }
}

[ProtoContract]
public class ExampleReply
{
    [ProtoMember(1)]
    public string Prop1 { get; set; }
}

Example.proto 文件

service IExampleService {
    rpc ExampleMethod (ExampleRequest) returns (ExampleReply) {}
}

message ExampleRequest{
   string Prop1 = 1;
   .google.protobuf.Timestamp TimeProp2 = 2;
 }

message ExampleReply {
  string message = 1;
}

【问题讨论】:

    标签: .net serialization protocol-buffers grpc protobuf-net


    【解决方案1】:

    更新:现在存在,但它在 protobuf-net.Grpc.Reflection 中,通过 SchemaGenerator 类型。它还需要 protobuf-net v3。


    目前尚未编写执行此操作的代码。它有一个开放的 github 票,但需要一些时间。目前,您可能需要手动破解它。

    【讨论】:

    • 这个案例有更新吗?要链接github票吗?我确实发现了这个问题:github.com/protobuf-net/protobuf-net/issues/687 但这是最​​近的事情,成为您正在谈论的问题。至少在这种情况下,看起来这也适用于服务?
    • @DominikAmon 好消息,现在存在。将编辑。
    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多