У меня есть следующие классы:
[DataContract]
public class ErrorBase {}
[DataContract]
public class FileMissingError: ErrorBase {}
[DataContract]
public class ResponseFileInquiry
{
[DataMember]
public List<ErrorBase> errors {get;set;};
}
Экземпляр класса ResponseFileInquiry - это то, что мой метод сервиса возвращается клиенту. Теперь, если я заполню ResponseFileInquiry.errors с экземплярами ErrorBase, все работает нормально, но если я добавлю экземпляр унаследованного типа 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.'
Таким образом, сериализатор запутывается, потому что ожидает, что List будет содержать объявленные объекты типа (ErrorBase), но получит объекты с унаследованным типом (FileMissingError).
У меня есть целая группа типов ошибок, и Список будет содержать их комбинации, поэтому что я могу сделать, чтобы заставить его работать?