我有一个C#桌面应用程序,我试图制作观察者设计模式(这是一个客户端服务器应用程序)。我有用户和活动,每当用户要进行一项不再有可用位置的活动时,都必须将其放入观察者列表。这就是我保持观察者的方式:
[Serializable]
public class Activity : IObservable
{
[PrimaryKey, AutoIncrement]
public int IDA { get; set; }
public String name { get; set; }
[Ignore]
public List<IObserver> observers { get; set; }
= new List<IObserver>();
并且当活动的地点更新时,我将观察者添加到列表中。我的问题是,观察者列表没有将观察者保留在程序的执行之中,我确实是在创建新的活动实例,但是我该如何解决呢?也尝试过使用静态列表,结果相同
要保留数据,有几个选项
请记住,序列化/反序列化将创建新对象,因此不会保留事件处理程序之类的东西。
如果要确保持久性列表得到更新,通常会在发生更改时调用存储方法,或者引发更改的事件,或者使用计时器检查对象是否已更改。
也可以在注册表或应用程序设置中存储数据,但这更适合于配置数据而不是数据列表。