gpt4 book ai didi

c# - 序列化对象时如何忽略事件订阅者?

转载 作者:可可西里 更新时间:2023-11-01 07:53:21 26 4
gpt4 key购买 nike

当使用 BinaryFormatter 序列化以下类时,订阅 Roar 事件的任何对象也将被序列化,因为对这些对象的引用由 EventHandler 委托(delegate)持有.

[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: It's also perfectly fine to ask and answer your own question, but pretend you're on Jeopardy: phrase it in the form of a question.

最佳答案

您必须将“field:”作为 [NonSerialized] 属性的一部分包含在 event 中。

即:

[field: NonSerialized]
public event EventHandler Roar;

关于c# - 序列化对象时如何忽略事件订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1173667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com