c#如何在应用程序中存储解析后的数据

本文关键字:数据 存储 应用程序 | 更新日期: 2023-09-27 18:03:57

这是一个相当普遍的问题,但它与整个应用程序设计有关。我正在尝试创建遵循类设计标准的应用程序,并且我正在努力解决如何在内部存储信息的一个方面。

例如,我可以为Movie创建一个类,其中包含两个字段:

    标题
  • <
  • 年/gh>董事

所以当我解析包含这些元数据的xml文件时,我会将它们加载到一个公共列表中。我不确定这是不是一个正确的方法?既然List是对象的实例,也许它不属于定义Movie的类?

这是一个公共列表,它将在应用程序的其他部分可用。

我看不出在应用程序活动期间多次解析xml文件有什么意义。访问SQLite等数据库也是如此。

我看了单例设计,我不确定这是不是一个正确的方法?另外,根据我查看的Singleton示例,我不知道是否可以定义前面提到的字段。

我的问题是。如何处理扫描文件夹中的元数据或文件路径?您将这些信息保存在应用程序中的什么位置?

谢谢

c#如何在应用程序中存储解析后的数据

解析XML文件的类不应该存储结果。如果这个类解析一个电影列表,它应该只返回一个IEnumerable<Movie>,然后该类的调用者可以将结果存储在它想要的任何地方。

这是一个非常普遍的问题,根据您的nfr,有许多方法可以做到这一点。以下是一种非常基本的方法,应该与许多方法向前兼容。

  1. 将主程序范围内的列表声明为IList<Movie>

  2. 写一个类实现IList(如class MovieList:IList<Movie>),暴露你需要的数据。如果你想,它可以缓存它。不需要。现在,编写可以工作的最简单的代码。

  3. 之后,在主程序中,你可以改变你的illist的声明,使用IoC容器实例化illist(例如_myList = Container.Resolve<IList<Movie>>)。这样您就可以替换不同的数据提供程序,或者替换单元测试的模拟提供程序。

  4. 之后,您可以更改MovieList的实现以包括缓存,或将数据存储在DB中,或任何您想要的。或者您可以在一个新类中完全重写它,并更改IoC容器的配置以指向新类。你会有各种各样的选择。(缓存或不缓存的决定最终取决于nfr,如存储容量、性能和并发性/ACID)

关键是写下程序真正需要的基本内容,然后再考虑何时何地存储这些内容的细节。

我不认为简单地将整个列表存储在全局变量中而不进行某种抽象是一个好主意。