Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Сериализация


Автор: WinNet 10.3.2007, 17:46
Возникает ошибка при реконструкции объекта.
Ход действий такой:
Выполняется Программа1 которая осуществляет сериализацию то есть сохраняет
экземпляр Serialize в памяти.

        
Код

static void Main(string[] args)
        {
            Serialize scr = new Serialize();
            scr.MonitoringObject = "TestSTR1";
            scr.TypeFile = "TestSTR2";
            BinaryFormatter bin = new BinaryFormatter();
            Stream F = new FileStream("Data.dat",FileMode.Create,FileAccess.Write,
            FileShare.None);                   
            bin.Serialize(F, scr);
            F.Close();
            Console.ReadLine();
        }

Тип Serialize описан так:

    
Код

[Serializable]
    public class Serialize
    {
        public string MonitoringObject;
        public string TypeFile;
    }

Сериализация проходит успешно , а вот при реконструкции файла Data.dat Программой2:

       
Код

 static void Main(string[] args)
        {
            Stream fStream = new FileStream("Data.dat", FileMode.Open, FileAccess.Read, FileShare.None);
            BinaryFormatter binFormat = new BinaryFormatter();
            Serialize srz = (Serialize)binFormat.Deserialize(fStream);  // Ошибка!
            fStream.Close();

            FileStream F = File.Open("test.txt", FileMode.Create, 
            FileAccess.ReadWrite);  
         
            byte[] msg = Encoding.Default.GetBytes(srz.MonitoringObject);
            F.Write(msg, 0, msg.Length);
            F.Close();
        }

Возникает ошибка  Unable to find assembly 'ConsoleApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

Автор: nikitao 10.3.2007, 18:22
Ошибка никак не связана с кодом. Кроме того код нормально работает ;)  Ты наверно что то в решении нахимичил. ( У меня код запахал )  

Автор: mr.DUDA 10.3.2007, 19:11
Всё правильно пишет, ведь сериализуемый класс привязан к одной сборке (exe или длл), поэтому обе проги должны использовать одну общую длл с этим классом, либо не писать в поток полные имена типов (для этого юзать XML-сериализацию).

Автор: WinNet 10.3.2007, 20:26
Спасибо! С  dll все заработало  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)