DataContractSerializer и List (Исключение) - PullRequest
0 голосов
/ 30 января 2010

Как я могу сериализовать список объектов Exception (также включая производные исключения, например FileNotFoundException) с DataContractSerializer?

Я всегда получаю сообщение о том, что сериализатор не знает типы в списке, поэтому я разработал обходной путь.

Это выглядело примерно так:

Dim XmlSerializer As New DataContractSerializer( _
    ExceptionsList.GetType(), ExceptionsList.Select(Function(i) i.GetType))
XmlSerializer.WriteObject(Stream, List)

Это работает. Я просто добавляю все различные типы исключений в список известных типов, и это работает. Но на десериализации я застрял. Проблема в том, что я заранее не знаю, какие типы исключений хранятся в файле.

Ответы [ 2 ]

0 голосов
/ 30 января 2010

Вы можете попробовать распаковать исключения, входящие в сериализатор, в System.Exception. Я не знаю, будет ли это иметь какое-то реальное влияние, но, по крайней мере, проходящий тип может быть зарегистрирован как нечто стандартное.

(выстрел в темноте)

0 голосов
/ 30 января 2010

Я думаю, что ты SOL. Сериализатору необходимо знать типы, которые могут быть на входе.

Вы можете попробовать использовать NetDataContractSerializer. Это выводит метаданные типа в дополнение к сериализуемым данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...