我有这些类:
[DataContract]
public class ErrorBase {}
[DataContract]
public class FileMissingError: ErrorBase {}
[DataContract]
public class ResponseFileInquiry
{
[DataMember]
public List<ErrorBase> errors {get;set;};
}
我的服务方法返回的是类ResponseFileInquiry的实例。如果我使用ErrorBase的实例填充ResponseFileInquiry.errors,一切都能正常工作。但是,如果我添加一个继承类型FileMissingError的实例,序列化期间就会出现服务端异常:
Type 'MyNamespace.FileMissingError' with data contract name 'FileMissingError'
is not expected. Add any types not known statically to the list of known types -
for example, by using the KnownTypeAttribute attribute or by adding them to the
list of known types passed to DataContractSerializer.'
这是因为序列化程序期望列表包含声明类型的对象(ErrorBase),但实际上它却收到了继承类型(FileMissingError)的对象,导致混淆。
我有很多错误类型,列表将包含它们的组合,那么我该怎么做才能使其正常工作?