使用 protobuf-net 为 Windows 商店应用程序序列化私有成员
Posted
技术标签:
【中文标题】使用 protobuf-net 为 Windows 商店应用程序序列化私有成员【英文标题】:Serializing private members with protobuf-net for windows store apps 【发布时间】:2014-01-14 22:58:35 【问题描述】:我正在尝试使用 protobuf-net 库为 Windows 商店风格的应用序列化一个具有私有成员的简单自定义类:
[ProtoContract]
class ProtoTest
[ProtoMember(1)]
string Test;
public ProtoTest(string test)
this.Test = test;
当我序列化一个实例时,私有成员永远不会被序列化,而是被忽略。公开成员可以解决问题,但对于我的应用程序来说并不是一个令人满意的解决方案。有什么我在这里做错了吗,或者有人知道这是否是一个已知的错误(我进行了搜索但找不到任何东西)?
【问题讨论】:
【参考方案1】:protobuf-net wiki中的样本。
[ProtoContract]
public class StandaloneExtensible : IExtensible
[ProtoMember(1)]
public int KnownField get; set;
private byte[] buffer;
Stream IExtensible.BeginAppend()
return Extensible.BeginAppend();
Stream IExtensible.BeginQuery()
return Extensible.BeginQuery(buffer);
void IExtensible.EndAppend(Stream stream, bool commit)
buffer = Extensible.EndAppend(buffer, stream, commit);
void IExtensible.EndQuery(Stream stream)
Extensible.EndQuery(stream);
int IExtensible.GetLength()
return Extensible.GetLength(buffer);
【讨论】:
虽然我可以使用扩展来解决这个问题,但这并不能真正提供足够的解决方案。每当我在任何其他平台(Windows / Mono / Xamarin.android / Xamarin.ios)上使用 protobuf-net 库时,我总是能够序列化私有成员。您知道这是否是阻止私有成员被序列化的 Windows 应用商店应用程序的基本限制? 如果您在 Windows 中使用它,应该没有任何限制。是同一个版本吗?就个人而言,我以前没有使用过这个库。以上是关于使用 protobuf-net 为 Windows 商店应用程序序列化私有成员的主要内容,如果未能解决你的问题,请参考以下文章
使用 Protobuf-net 将大数据文件流式传输为 IEnumerable
我可以为 Protobuf-net 设置一个全局对象工厂吗?