次のクラスが でシリアル化されるとBinaryFormatter
、イベントをサブスクライブするすべてのオブジェクトRoar
もシリアル化されます。これは、これらのオブジェクトへの参照が EventHandler デリゲートによって保持されるためです。
[Serializable]
public class Lion
{
public event EventHandler Roar;
public string Name { get; set; }
public float Fluffiness { get; set; }
public Lion(string name, float fluffiness)
{
Name = name;
Fluffiness = fluffiness;
}
public void Poke()
{
Roar(); // Could be null, etc..
}
}
Lion で始まるオブジェクト グラフの一部としてイベント サブスクライバーがシリアル化されるのをどのように停止しますか?
に[NonSerializable]
属性を配置するevent
と、コンパイルされません。
注:サイトに情報があると役立つと思うので、私は自分の質問に答えています!
FAQ: 自分で質問して答えるのもまったく問題ありませんが、Jeopardy に参加しているふりをして、質問の形で表現してください。