Serializable としてマークされた単純なクラスがあり、たまたまイベントがあります。イベント メンバーを NonSerialized としてマークしようとしましたが、コンパイラが文句を言います。しかし、クラス インスタンスをシリアル化しようとすると、BinaryFormatter は、イベントがシリアル化できないという例外をスローします。イベントを持つクラスをシリアル化できないということですか? もしそうなら、コンパイラは前もってそう言うべきです。
Stream file = File.Open("f", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
object obj = null;
try
{
obj = bf.Deserialize(file);
}
catch (System.Runtime.Serialization.SerializationException e)
{
MessageBox.Show("De-Serialization failed : {0}", e.Message);
}
file.Close();
System.Collections.ArrayList nodeList = obj as System.Collections.ArrayList;
foreach (TreeNode node in nodeList)
{
treeView.Nodes.Add(node);
}
次のクラスでは動作しません:
[Serializable()]
class Simple
{
private int myInt;
private string myString;
public event SomeOtherEventDefinedElsewhere TheEvent;
}