Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамически подключенная dll и десериализация, При десериализации не находит соответсву 
V
    Опции темы
Anyone
Дата 1.6.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



У меня такая проблемма. Существует иеархия классов, при чем базовый класс и большое множество производных от него классов раскиданы по разным dll-кам (в одной - сколько угодно производных классов). И мне необходимо сохранять состояние классов (использую SOAP сериализацию). Так вот, если эти dll-ки подключаю статически, то все нормально, но когда динамически - возникает ошибка при попытке десериализировать, при чем на этапе разбора элементов XML файла.

Сериализация:
Код

            SoapFormatter formatter = new SoapFormatter();
            FileStream stream = File.Open(fileName, FileMode.Create);
            FbdProgram tmp=new FbdProgram();
            formatter.Serialize(stream, tmp);
            stream.Close();


Десериализация:
Код

            Stream stream = File.Open(fileName, FileMode.Open);
            SoapFormatter formatter = new SoapFormatter();
            FbdProgram tmp=new FbdProgram();
            tmp = (FbdProgram)formatter.Deserialize(stream);
            stream.Close();


Фрагмент сохраненного XML файла:
<a2:MUL_INT id="ref-10" xmlns:a2="http://schemas.microsoft.com/clr/nsassem/FBDVisualBlocks.VisualBlocks/FBDVisualBlocks%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db98b95bcb02affd6">

Ошибка происходит при десериализации на строчке:
tmp = (FbdProgram)formatter.Deserialize(stream);

При этом она имеет следующий вид:

An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in System.Runtime.Serialization.Formatters.Soap.dll

Additional information: Parse Error, no assembly associated with Xml key a2:http://schemas.microsoft.com/clr/nsassem/FBDVisualBlocks.VisualBlocks/FBDVisualBlocks%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Db98b95bcb02affd6 MUL_INT

Библиотеки подключаются так: ищутся все dll-ки в заданном каталоге и подключаются с помощю  Assembly.LoadFrom():
Код

        public void LoadDlls(string path)
        {
            DirectoryInfo Dir = new DirectoryInfo(path);
            FileInfo[] files = Dir.GetFiles("*.dll");
            foreach (FileInfo file in files)
            {
                a = Assembly.LoadFrom(Application.StartupPath + "\\" + path+"\\"+file.Name/*.Substring(0, file.Name.Length - 4)*/);
                _types = a.GetTypes();
                foreach (Type type in _types)
                {
                    ListOfTypes.Add(type);
                }
            }

        }

Что мне делать???

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.