0

我想创建将对象序列化为文件的方法。比我读取文件并将内容作为字符串获取。我将字符串保存在数据库中,然后从数据库中读取字符串并将其反序列化为对象

我几乎做到了,但我得到了错误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 转换为 Stream 以进行反序列化的方式

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;
    }

我在哪里犯错?我应该怎样做才能让它更好地工作?

4

1 回答 1

1

得到了答案。

首先感谢@I4V 的评论:

这是我的序列化方法

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 可以从 String 反序列化对象

 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;
    }

就这样

于 2013-08-21T16:27:46.883 回答