我们在使用protobuf-net类型继承时遇到了麻烦。
我们有这样一个基类:
[DataContract, ProtoContract]
public abstract class BaseClass : IBase
{
protected IBase()
{
RequestUID = Guid.NewGuid();
}
[DataMember(Order = 8000), ProtoMember(8000)]
public Guid ID { get; set; }
[DataMember(Order = 8001), ProtoMember(8001)]
public string User { get; set; }
}
继承自BaseClass的类。
[DataContract, ProtoContract]
public class ConcreteClass : BaseClass
{
[DataMember(Order = 4), ProtoMember(4)]
public int? WorkItemId { get; set; }
}
(将来我们将只使用ProtoMember和ProtoContract。)
当客户端和服务器启动时,我们会在两种环境中都执行以下操作:
RuntimeTypeModel.Default[typeof(BaseClass)].AddSubType(50, typeof(ConcreteClass));
现在,当我们将ConcreteClass的实例传递给WCF服务操作时,我们会得到例外:
我们做错了什么? WCF行为正确注册。我们对简单类没有问题(没有继承)。
是否有文档如何为WCF场景正确配置继承?
由于