当使用 a 序列化以下类时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
不会编译。
注意:我正在回答我自己的问题,因为我认为在网站上提供这些信息可能会很有用!
常见问题解答:问和回答你自己的问题也很好,但假装你在危险中:以问题的形式表达它。