0

オブジェクトをファイルにシリアル化するメソッドを作成したいと考えています。ファイルを読み取ってコンテンツを文字列として取得するよりも。文字列をデータベースに保存し、DB から文字列を読み取り、それをオブジェクトに逆シリアル化します

私はほとんどそれをしましたが、エラーが発生します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;
    }

どこで間違いを犯していますか?それを機能させるには何を改善すればよいですか?

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

そして今、String からオブジェクトを 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;
    }

それで全部です

于 2013-08-21T16:27:46.883 に答える