Исключение SerializationException для динамически загружаемого Типа - PullRequest
0 голосов
/ 06 февраля 2012

В результате моего предыдущего вопроса ( XML-сериализация интерфейсов ) у меня возникла другая проблема ...

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

Конкретные реализации загружаются как подключаемые модули (DLL), поэтому я не ссылаюсь на них в своем коде напрямую.

Мне нужно сериализовать экземпляры этих конкретных классов как байтовые массивы в мою базу данных, но теперь, когда я пытаюсь десериализовать их из байтового массива, я получаю SerializationException: Unable to find assembly …

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

Как я могу это решить?

ПРИМЕЧАНИЕ Я использую этот код для десериализации объектов:

    public static object DeSerialize(byte[] arrayToDeSerialize)
    {
        object serializedObject;
        using (MemoryStream stream = new MemoryStream(arrayToDeSerialize))
        {
            //Creating binary formatter to De-Serialize string.
            BinaryFormatter formatter = new BinaryFormatter();

            //De-Serializing.
            serializedObject = formatter.Deserialize(stream);
        }
        return serializedObject;
    }

1 Ответ

4 голосов
/ 06 февраля 2012

Вы можете перехватить событие AppDomain.AssemblyResolve , чтобы загрузить сборки по мере необходимости. событие вызывается каждый раз, когда среде выполнения требуется сборка, которую она не может разрешить. Это дает вам последний шанс предоставить сборку до того, как будет сгенерировано исключение «Невозможно найти сборку». Примеры на странице, на которую я ссылаюсь.

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