我想在服务器端使用ServiceStack,我想使用protobuf-net作为ServiceStack使用的序列化系统。但是,某些客户端不会使用ServiceStack客户端库。他们将直接使用protobuf-net。
在阅读广泛链接的ServiceStack协议缓冲区howto(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包装器,我是否需要将这两个属性添加到每个类和属性中,或者一个或另一个是否足够?
答案 0 :(得分:2)
ProtoBuf需要从Properties到数字索引的映射,both of the options you've specified are equivalent这样做的方法:
[DataContract]
public class Dto
{
[DataMember(Order=i)]
public string PropertyName { get; set; }
}
[ProtoContract]
public class Dto
{
[ProtoMember(i)]
public string PropertyName { get; set; }
}