首先,我非常喜欢protobuf-net,因为它的速度和易用性。 现在我正在开发一个.NET类库,并希望在不实际引用它的情况下使我的一些类protobuf-net-ready,因为:
据我了解,这可以通过手动编写.proto文件来完成。任何人都可以解释我或给出一个如何做到这一点的链接?有没有办法从属性描述生成.proto文件?客户端序列化/反序列化代码将如何显示?
答案 0 :(得分:1)
据我了解,这可以通过手动编写.proto文件来完成
都能跟得上;这不是必要的,也无济于事。
我们假设你有一个类型:
[ProtoContract]
public class Foo {
[ProtoMember(1)]
public int Bar {get;set;}
// ...
}
有两种方法可以做你想做的事:
使用内置平台属性,例如:
[DataContract]
public class Foo {
[DataMember(Order=1)]
public int Bar {get;set;}
// ...
}
或
[XmlType]
public class Foo {
[XmlElement(Order=1)]
public int Bar {get;set;}
// ...
}
在运行时显式配置模型(在模型尝试使用Foo
之前):
RuntimeTypeModel.Default.Add(typeof(Foo), false).Add(1, "Bar");
(后者当然仍然要求你在某个时候与ProtoBuf
交谈,但它不要求你的POCO类型知道序列化)
其中任何一个都应该有用。