如何使用 Protobuf.net C# 序列化自定义对象基础属性
Posted
技术标签:
【中文标题】如何使用 Protobuf.net C# 序列化自定义对象基础属性【英文标题】:How to serialize a custom object base properties using Protobuf.net C# 【发布时间】:2014-03-10 11:16:34 【问题描述】:我有一个继承 PictureBox 控件的自定义类,当我反序列化对象时,我缺少所有基本属性,例如“名称”。这是课程。
[ProtoContract]
[ProtoInclude(100,typeof(PictureBox))]
class Card : PictureBox
[ProtoMember(1)]
public string CardId get; set;
[ProtoMember(2)]
public string CardName get; set;
[ProtoMember(3)]
public string CardColor get; set;
[ProtoMember(4)]
public string CardType get; set;
[ProtoMember(5)]
public string CardRarity get; set;
[ProtoMember(6)]
public bool Tapped get; set;
[ProtoMember(7)]
public bool Revealed get; set;
【问题讨论】:
【参考方案1】:如果您无法修改基类,一种可能性(未经测试)是揭示您需要什么:
[ProtoMember(8)]
public new string Name
get return base.Name;
set base.Name = value;
在制作我自己的控件(例如,我自己的Label
)时,我正在使用这种技术将我自己的属性(或更改DefaultAttribute
值)应用于标准控件的某些属性,并且它似乎有效。
【讨论】:
【参考方案2】:我的理解是,您可能还需要基类上的 [ProtoContract] 属性。 http://www.codeproject.com/Articles/642677/Protobuf-net-the-unofficial-manual
【讨论】:
是的,我认为这可能是我自己的答案,但我不知道如何编辑 Picturebox 的类文件。 我认为您可能需要某种包装器/适配器。 Doh.. 我以前从未经历过的事情。关于从哪里开始包装器/适配器的任何建议?以上是关于如何使用 Protobuf.net C# 序列化自定义对象基础属性的主要内容,如果未能解决你的问题,请参考以下文章
protobuf 和 List<object> - 如何序列化/反序列化?
protobuf -net 不知道如何序列化 type = object 的数据成员