如何维护我的观察者在C#中列出整个程序?

问题描述 投票:0回答:1

我有一个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>();

并且当活动的地点更新时,我将观察者添加到列表中。我的问题是,观察者列表没有将观察者保留在程序的执行之中,我确实是在创建新的活动实例,但是我该如何解决呢?也尝试过使用静态列表,结果相同

c# observer-pattern
1个回答
0
投票

要保留数据,有几个选项

  1. 将数据序列化到文件。 Json是一种流行的替代方法。这可能是最简单的替代方法
  2. 将数据存储在数据库中。 Entity framework是执行此操作的一种方法。

请记住,序列化/反序列化将创建新对象,因此不会保留事件处理程序之类的东西。

如果要确保持久性列表得到更新,通常会在发生更改时调用存储方法,或者引发更改的事件,或者使用计时器检查对象是否已更改。

也可以在注册表或应用程序设置中存储数据,但这更适合于配置数据而不是数据列表。

© www.soinside.com 2019 - 2024. All rights reserved.