首页 > 解决方案 > Protobuf 字符串默认值

问题描述

在 .proto 上

message ClientInfos 
{   
   optional bytes ProfessionType       = 1 [default = "Doctor"];    
   optional bytes State                = 2 [default = "AZ"];  
}

这是创建的 C# 代码

[global::ProtoBuf.ProtoContract()]
public partial class ClientInfos : global::ProtoBuf.IExtensible
{
    private global::ProtoBuf.IExtension __pbn__extensionData;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
        => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    [global::ProtoBuf.ProtoMember(1)]
    [global::System.ComponentModel.DefaultValue(Doctor)]
    public byte[] ProfessionType
    {
        get => __pbn__ProfessionType ?? Doctor;
        set => __pbn__ProfessionType = value;
    }
    public bool ShouldProfessionType() => __pbn__ProfessionType != null;
    public void ResetProfessionType() => __pbn__ProfessionType = null;
    private byte[] __pbn__ProfessionType;

    [global::ProtoBuf.ProtoMember(2)]
    [global::System.ComponentModel.DefaultValue(AZ)]
    public byte[] State
    {
        get => __pbn__State ?? AZ;
        set => __pbn__State = value;
    }
    public bool ShouldSerializeState() => __pbn__State != null;
    public void ResetState() => __pbn__State = null;
    private byte[] __pbn__State;
}

Doctor 上有一条错误消息:名称“Doctor”在当前上下文中不存在 AZ 相同

实际上所有的字符串默认值都有相同的错误信息

我试图把 syntax = "proto2"; 但它解决了问题

标签: c#protocol-buffersprotobuf-net

解决方案


推荐阅读