3

我想在服务器端使用ServiceStack,我想使用protobuf-net作为ServiceStack使用的序列化系统。但是,一些客户端不会使用 ServiceStack 客户端库。他们将直接使用 protobuf-net。

在阅读广泛链接的 ServiceStack 协议缓冲区操作指南 ( http://stevenhollidge.blogspot.in/2012/04/servicestack-rest-with-protobuf.html ) 时,它表明使用 [DataContract] 和 [DataMember(Order=i)]分别在类和属性上的属性。但是,当我阅读 protobuf-net 文档时,它表明属性是 [ProtoContract] 和 [ProtoMember(i)]。

如果我希望我的 DTO 同时使用本机 protbuf-net 和 ServiceStack 的 protobuf-net 包装器,我是否需要将这两个属性都添加到每个类和属性中,或者其中一个就足够了?

4

1 回答 1

2

ProtoBuf 需要从 Properties 到数字索引的映射,您指定的两个选项都是执行此操作的等效方法:

[DataContract]
public class Dto
{
    [DataMember(Order=i)]
    public string PropertyName { get; set; }
}

[ProtoContract]
public class Dto
{
    [ProtoMember(i)]
    public string PropertyName { get; set; }
}
于 2013-04-23T20:02:10.733 回答