14
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..
}
}
どのようにライオンで始まるオブジェクトグラフの一部としてシリアライズされたイベントの加入者を止めるでしょうか?
[NonSerializable]
属性をevent
に入れることはコンパイルされません。
注:私は自分の質問に答えるつもりですが、その情報をサイトに持たせると便利かもしれません。
FAQ:それはあなた自身の質問をし、答えるためにも完全に大丈夫ですが、あなたはJeopardy状態にしているふり:質問の形でフレーズを。
感謝。しかし、それはなぜですか? –
System.NonSerializedAttributeには制約があるからです:フィールドにしか適用できません! – Grubl3r