3

これにより、実行時にシリアル化例外が発生します。これは、これを行う最善の方法をテストするための単なるデモ プロジェクトです。シリアライズしようとしているメインメソッドとクラスを含めました。

無視: 詳細を追加することは本当にできません。問題を説明し、コードを添付しました。この「詳細を追加してください」ということは、これまでで最も愚かなことです。もう投稿させてください。

Data toSend = new Data();
toSend.Output();

///SERIALIZE

BinaryFormatter formatter = new BinaryFormatter();
Stream streamOut = File.OpenWrite("file");
formatter.Serialize(streamOut, toSend);
streamOut.Close();


Console.WriteLine("----------------------------");
///DESERIALIZE

Stream streamIn = File.OpenRead("file");
Object received = formatter.Deserialize(streamIn);
Data toReceive = (Data)received;
toReceive.Output();

class Data : ISerializable
{
    int integerData;
    string stringData;
    bool booleanData;
    int shouldnotbeserialized;

    public Data()
    {
        integerData = 1;
        stringData = "Hello";
        booleanData = true;
        shouldnotbeserialized = 55;
    }

    //To deserialize
    public Data(SerializationInfo info, StreamingContext context)
    {
        integerData = info.GetInt32("theint");
        stringData = info.GetString("thestring");
        booleanData = info.GetBoolean("thebool");
    }

    public void Output()
    {
        Console.WriteLine(integerData);
        Console.WriteLine(stringData);
        Console.WriteLine(booleanData);
        Console.WriteLine(shouldnotbeserialized);
    }

    //Implemented method to serialize
    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("thestring", stringData);
        info.AddValue("theint", integerData);
        info.AddValue("thebool", booleanData);
    }
}

例外メッセージ:

アセンブリ 'SerializationDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' のタイプ 'SerializationDemo.Data' は、シリアル化可能としてマークされていません。

4

1 に答える 1