Protobuf-net GetProto使用List时的奇怪名称

时间:2017-01-19 10:07:35

标签: c# protobuf-net

我有以下课程:

[ProtoContract]
public class BaseModel<T>
{
    [ProtoMember(1, IsRequired = true), ]
    public int Timestamp { get; set; }

    [ProtoMember(2, IsRequired = true)]
    public T Data { get; set; }
}

[ProtoContract]
public class IdName
{
    [ProtoMember(1)]
    public int Id { get; set; }

    [ProtoMember(2)]
    public string Name { get; set; }
}

然后调用以下方法生成proto文件:

string protoFile = Serializer.GetProto<List<IdName>>();

我得到以下输出:

package Protobuf_Test;

message BaseModel_List`1 {
   required int32 Timestamp = 1 [default = 0];
   repeated IdName Data = 2;
}
message IdName {
   optional int32 Id = 1 [default = 0];
   optional string Name = 2;
}

为什么要生成这个奇怪的名字BaseModel_List`1? 有没有办法为此设置名称?

提前致谢

1 个答案:

答案 0 :(得分:1)

问题中的代码:

string protoFile = Serializer.GetProto<List<IdName>>();

工作正常 - 没有坏名字。假设你的意思是:

string protoFile = Serializer.GetProto<BaseModel<List<IdName>>>();

然后这是生成器代码的疏忽。 I've logged this as a bug