所以,如果我有:
[ProtoContract]
public abstract class BaseRequest
{
[ProtoMember(1)] public Guid Guid { get; set; }
}
[ProtoContract]
public class Request : BaseRequest
{
[ProtoMember(1)] public long Id { get; set; }
}
我尝试序列化Request并反序列化BaseRequest,它不起作用。它不知道具体的类是什么。我需要添加一个[ProtoInclude]
. 这对我来说很有意义。
我看到的是,如果我序列化请求并反序列化请求,那也不起作用,我认为这是出乎意料的。我希望序列化程序已经知道在这种情况下工作所需的一切。[ProtoInclude]
即使我要序列化的只是请求,我也需要包含on BaseRequest。
我遇到麻烦的地方是我在库中定义了一个 BaseRequest 并且该库的使用者需要从它继承。基本上,一种特定类型的请求必须附加数据——除了转储继承并将该代码复制/粘贴到每个子类中之外,是否有这种模式?