c# – Protobuf-net不序列化泛型类型继承自泛型类型

我有这个模型:

[ProtoContract]
[ProtoInclude(2, typeof(TestRequest<>))]
public class XClass<T>
{
    public XClass()
    {
    }

    [ProtoMember(1)]
    public T Value { get; set; }
}

[ProtoContract]
public class TestRequest<T>: XClass<T> where T : ConcreteClass
{

    public TestRequest()
    {
    }

}

[ProtoContract]
public class ConcreteClass
{
    [ProtoMember(1)]
    public string Name { get; set; }
}

如果我尝试使用protobuf-net进行序列化和反序列化:

TestRequest<ConcreteClass> request = new TestRequest<ConcreteClass>();
request.Value = new ConcreteClass() { Name = "test" };
MemoryStream msTestString = new MemoryStream();
Serializer.Serialize(msTestString, request);
msTestString.Position = 0;
request = Serializer.Deserialize < TestRequest<ConcreteClass>>(msTestString);

在此之后,如果我检查request.Value,它就是null.

我做错了什么?

最佳答案 这是protobuf-net的设计.它对数据如此快速和轻松的原因之一是它不担心类型信息.遗憾的是(嗯,取决于你的观点)完全排除了它的继承.

有关详细信息,请参阅protobuf with inheritance?

点赞