c# – protobuf-net List <>继承反序列化

我使用protobuf-net进行反序列化有问题.

我有以下课程:

[ProtoContract]
public class CrazyList : List<string>
{
    [ProtoMember(1)]
    private readonly string _foo;

    public CrazyList(string foo)
    {
        _foo = foo;
    }

    public CrazyList(){}

    public new void Add(string item)
    {
        Console.Write(item + foo); // Problem is here!

        base.Add(item);
    }

}

并像这样使用它:

var list = new CrazyList("world!");
list.Add("Hello ");

using (var ms = new MemoryStream())
{
    Serializer.Serialize(ms, list);

    ms.Position = 0;

    var listDS = Serializer.Deserialize<CrazyList>(ms);
    listDS.Add("Goodbye ");
}

在_foo字段反序列化完成之前,方法Add正在触发.

我怎么能解决这个问题?

最佳答案 你需要将它用于CrazList attribut;

[ProtoBuf.ProtoContract(IgnoreListHandling=true)]
点赞