【问题标题】:How to serialize a custom object base properties using Protobuf.net C#如何使用 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; }
}

【问题讨论】:

    标签: c# serialization deserialization protobuf-net


    【解决方案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.. 我以前从未经历过的事情。关于从哪里开始包装器/适配器的任何建议?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2010-11-18
      • 2021-08-22
      相关资源
      最近更新 更多