我正在使用 protobuf-net 库来加速 wcf 序列化,现在我遇到了派生类的问题。我查看了几个关于类派生的讨论,但没有一个适合我的问题。
我正在使用以下基础:
[DataContract, ProtoContract]
//[ProtoInclude(10000, typeof(SysLoginRequest))]
public class ServiceRequest
{
public ServiceRequest()
{
// No parameterless constructor found for ServiceRequest?
RuntimeTypeModel.Default.Add(typeof(ServiceRequest), true).AddSubType(10000, typeof (SysLoginRequest));
}
}
和派生类:
[DataContract, ProtoContract]
public class SysLoginRequest : ServiceRequest, IServiceRequest<SysLoginResponse>
{
[DataMember(Order = 1, IsRequired = true)]
public string UserSid { get; set; }
[DataMember(Order = 2, IsRequired = true)]
public string UserName { get; set; }
[DataMember(Order = 3, IsRequired = true)]
public string Password { get; set; }
[DataMember(Order = 4, IsRequired = true)]
public string IpAddress { get; set; }
[DataMember(Order = 5)]
public string ProcessName { get; set; }
[DataMember(Order = 6)]
public int ProcessId { get; set; }
}
我想要做的是通过在运行时添加子类来摆脱属性,但在我的测试中,我总是得到运行时错误,即基类没有无参数构造函数?我试图将构造函数设为静态,但这也无济于事。
如果我使用该属性(并删除构造函数)一切都很好,但如果我使用 RuntimeTypeModel 执行此操作,我会收到错误消息。我在这里做错了什么?