2013-08-21 3 views
0

Я хочу создать метод, который сериализует объект в файл. Чем я читаю файл и получаю контент как String. Я сохранить строку в базе данных и чем я прочитал строки из БД и I De-сериализовать его в объектне может десериализовать объект из потока, созданного из строки

Я почти сделал это, но я получаю ошибку, что there is no map for object

Это, как я сериализовать объект

public static String Serialize(Object toSerialize) 
    { 
     Random random = new Random(); 
     int randomNumber = random.Next(100000, 1000000000); 
     String fileName = randomNumber + ".txt"; 

     fileName = "EmployeeInfo.txt"; 

     Stream stream = File.Open(fileName, FileMode.Create); 
     BinaryFormatter bformatter = new BinaryFormatter(); 

     bformatter.Serialize(stream, toSerialize); 
     stream.Close(); 

     String fileContent = File.ReadAllText(fileName); 

     return fileContent; 
    } 

Это как преобразовать строку в поток для десериализации

String serialized = Serializer.Serialize(user); 

     MemoryStream mStream = new MemoryStream(); 
     StreamWriter writer = new StreamWriter(mStream); 
     writer.Write(serialized); 
     writer.Flush(); 
     mStream.Position = 0; 

А теперь десериализации

public static Object Deserialize(Stream stream) 
    { 
     Object returnObject; 
     BinaryFormatter bformatter = new BinaryFormatter(); 
     returnObject = (Object)bformatter.Deserialize(stream); 
     stream.Close(); 

     return returnObject; 
    } 

Где я могу сделать ошибку? Что я должен сделать лучше, чтобы заставить его работать?

+0

Какой объект вы хотите сериализовать? – Tarec

+0

, на какой строке вы получаете ошибку –

+3

Вы не можете прочитать двоичный файл с помощью 'ReadAllText'. Используйте 'Convert.ToBase64String (File.ReadAllBytes (filename))' – I4V

ответ

0

Получил ответ.

Прежде всего спасибо за @ I4V за его комментарий:

Это мой метод Serialize

public static String Serialize(Object toSerialize) 
    { 
     Random random = new Random(); 
     int randomNumber = random.Next(100000, 1000000000); 
     String fileName = randomNumber + ".txt"; 

     fileName = "EmployeeInfo.txt"; 

     MemoryStream stream = new MemoryStream(); 

     BinaryFormatter bformatter = new BinaryFormatter(); 
     bformatter.Serialize(stream, toSerialize); 

     String fileContent = Convert.ToBase64String(stream.ToArray()); 
     stream.Close(); 

     return fileContent; 
    } 

А теперь метод Deserialize, который может Deserialize объект из строки

public static Object Deserialize(String stringObject) 
    { 
     Object returnObject; 
     byte[] bytes = Convert.FromBase64String(stringObject); 

     MemoryStream stream = new MemoryStream(bytes); 

     BinaryFormatter bformatter = new BinaryFormatter(); 
     returnObject = bformatter.Deserialize(stream); 

     return returnObject; 
    } 

вот и все

Смежные вопросы