WinForm应用程序数据持久性(C#)

我相信ASP.NET应用程序中“可变短期”持久性的最佳方式是:

  1. 会话变量(会话范围)
  2. 应用变量(应用范围)
  3. 页面视图(页面范围)
  4. 应用设置(应用范围)
  5. ???

在Windows窗体应用程序中,“可变短期”持久性的最佳方法是:

  1. 表格范围
  2. 用户会话范围
  3. 应用全球范围

谢谢

右键单击项目,选择属性 – >设置。 您可以编辑持久字段(即设置),指定名称,类型和范围(用户范围或应用程序范围)。

您可以通过 .Properties.Settings.Default从代码中访问它们。

应用程序运行之间的设置是持久的。

您也应该将这些设置用于表单范围。

所有这些设置对于在应用程序运行之间存储持久值有意义。 使用常规(静态)字段在一个程序实例中存储数据。

那么,对于“表单范围”,您可以简单地使用字段或属性。 对于应用程序设置和会话设置,您可以使用(静态)类或其他任何方便的方法。

请注意,WinForms应用程序中的应用程序和会话之间确实没有区别,您不再在服务器上。

您可以在创建时指定当前用户或全局设置。 如果你查看VS中的项目属性,你会看到这一点

替代文字http://img268.imageshack.us/img268/9186/projectsettings.png

对于只能通过表单访问的变量,我只会将它们设为私有字段。 在win表单应用程序中没有“会话”这样的东西,但是,您可以使用CallContext来模拟会话,因为HttpContext和Web应用程序中的Session都是基于此类的。

我可能存储在Application对象本身或应用程序配置文件中的任何全局内容。

我并不完全确定你想要超越对象生命周期的界限,但正如Henk所说,你的表格在其加载的持续时间内具有范围,你可以在表格中添加属性,可以通过表单实例化时的代码,并将持续到表单被卸载。 下一个范围实际上是Application对象(除非您将表单包装在某种自定义容器类中),您可以在其中添加应用程序生命周期的属性(实际上是Application对象)。

要超出Application的范围,请使用Properties类或在注册表中存储数据(在适当标识和命名的位置)。

听起来你在某种程度上是在思考,它听起来有点像全局变量(或者至少比方法或对象范围更大)持久性。 而不是根据变量进行思考,而是根据这些对象的对象和属性进行思考。 如果你已经正确设计了对象模型,那么适当属性的持久性应该是它的函数。