当下面的类被序列化时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
不会编译。
注意:我正在回答我自己的问题,因为我认为在网站上提供信息可能会有用!
常见问题解答:提出并回答你自己的问题也是完全可以的,但假装你正处于危险之中:以问题的形式表达它。
你必须包括“field:
“作为[NonSerialized]
属性上的event
.
i.e.:
[field: NonSerialized]
public event EventHandler Roar;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)