2009-07-30 66 views
2

我beleive“可变短期”持久性的最佳方式在ASP.NET应用程序是:winform应用程序数据持久性(C#)

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

什么是一个Windows窗体应用程序的 “变量短期” 持久性的最佳途径:

  1. 形式范围
  2. 用户会话范围
  3. 应用全局范围

谢谢

+0

我的要求是,我需要一个占位符来存储我可以在应用程序生命周期的任何时刻访问和修改的数据(即任何形式的数据)。我不需要访问具有在其中定义的属性/方法的表单。 – Bhaskar 2009-07-30 13:24:15

+0

如果它是非UI数据,则不应在任何表单上定义。考虑一个单独的对象。也许查看Singleton模式。 – 2009-07-30 14:41:21

回答

2

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

您可以通过<从代码访问它们默认命名空间> .Properties.Settings.Default。

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

您也应该为表单范围使用这些设置。

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

3

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

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

0

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

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

0

我并不十分确定你希望超越对象生命周期的界限,但正如亨克所说,你的窗体有一定的时间范围,它可以加载,你可以添加属性到窗体可以在Form被实例化时由你的代码初始化,并且将持续到Form被卸载。下一个范围实际上是Application对象(除非您将表单封装在某种自定义容器类中),您可以在其中为应用程序的生命周期(实际上是Application对象)添加属性。

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

听起来好像你在程序上有点思考,听起来有点像全局变量(或者至少比方法或对象范围更大)的持久性。不要用变量来思考,而要考虑这些对象的对象和属性。如果你已经正确地设计了你的对象模型,那么适当的属性的持久性应该是一个函数。