采用具有继承和接口的protobuf-net
本文关键字:接口 protobuf-net 继承 | 更新日期: 2023-09-27 18:07:04
我有一个合约原型如下:
[ProtoContract]
public MyContract: ContractBase
{
[ProtoMember(1)]
List<IMyDto> MyData
{
get;
set;
}
}
My MyDto是这样的,它的实现MyDto
[ProtoInclude(600, typeof(MyDto))]
public interface IMyDto
{
int MyData
{
get;
set;
}
}
[ProtoContract]
public class MyDto :IMyDto
{
[ProtoMember(1)]
int MyData
{
get;
set;
}
}
最后,我的ContractBase是这样的:
[ProtoContract]
[ProtoInclude(500, typeof(MyContract))]
public class ContractBase
{
[ProtoMember(501)]
public string[] ErrorMessages
{
get;
set;
}
}
当我进行web服务调用时,我一直得到以下错误:
不可能为:ContractBase --> System准备序列化器。InvalidOperationException:没有为type: IMyDto定义序列化器
请注意,这是用于理解问题的简化版本的代码。
请让我知道我做错了什么?非常感谢任何帮助。谢谢。
用[ProtoContract]
属性标记IMyDto
在我做了那件事之后,它对我很有效。