![](/img/trans.png)
[英]Serialize and deserialize Object with non standard constructor - protobuf-net
[英]How to serialize and deserialize Custom Lists with protobuf-net
我有一个自定义列表,其中包含一些我需要序列化的属性及其包含的项目。
但是,一旦我将 ProtoContract 属性添加到我的自定义列表中,它的项目就不会再序列化了。
例子:
[ProtoContract]
public class MyCollection : List<string> {
[ProtoMember(1)]
public string MyAdditionalField;
}
这不应该开箱即用吗?
我能想到的唯一可能的解决方法是使用自定义列表的代理,其中包含一个单独的列表,然后包含所有数据。 然而,我们正在处理相当多的自定义列表......所以这将是一种低效的方法。
谢谢你,TH
与XmlSerializer
和TypeDescriptor
(可能还有DataContractSerializer
- 我还没有检查过)一样,列表与包含列表之间存在很大的区别。 如果某物是一个列表,它本身没有值。
首选的布局是有一个列表或值。
在协议级别,根本无法表示它,因为这只是repeated string {name} = {field}
- MyAdditionalField
到 go 根本无处可去。
(更新); 经过测试,确实XmlSerializer
的行为相同:
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<string>abc</string>
<string>def</string>
</ArrayOfString>
DataContractSerializer
更讨厌它,抛出:
类型“MyCollection”是无效的集合类型,因为它具有 DataContractAttribute 属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.