提供软件设置的最佳方式?

cla*_*aws 12 .net c#

我正在使用C#.NET.

在我的软件中,我提供了设置对话框,用户可以通过该对话框设置我要保存到文件的应用程序设置.

要求(典型):

  1. 我定义的每个类都使用这些设置的一部分.所以,这些应该是所有类的全局.
  2. 这些应在软件启动时加载.
  3. 当用户更改设置并单击"保存"/"应用"时.当前设置应该更改.

我想知道最好的方法是什么?另外,将这些设置保存到磁盘的最佳方法是什么?我的意思是我应该创建一个Settings类对象并将其序列化为'settings.dat'或提供结构化文件,如XML/JSON

几乎所有其他软件都需要这样做.那么,是不是有任何设计模式呢?

编辑:

好吧,那是我不知道的事情.这真好 :).但是,当用户在中间使用软件时,他会更改设置,然后应该更改使用这些全局Properties.Settings.Default.*的所有其他对象.有什么样的通知机制吗?某种事件?

wom*_*omp 13

.Net项目已经具有设置的概念,范围限定为用户或应用程序,这将满足您上面的所有要求.有些类可以读取和写入设置.我强烈建议你看看这些而不是自己卷起来.

在C#中使用设置

您可以在各种项目类型中使用"设置",但在某些类型的项目(如ASP.Net项目)中,可能无法使用用户级设置.


Jef*_*dge 7

.Net附带的Settings类非常方便,我在大多数项目中使用它.需要注意的是应用程序的每个新版本都有自己的设置文件,因此请确保您具有合理的默认值.每当分发新的EXE时,所有设置都将消失.

全局状态很难正确处理,因此我通常将相关设置传递给构造函数或属性中的各种对象.而且我通常不会对这些对象应用设置更改,因为在很多情况下,对象很难智能地处理更改的设置.相反,我只是在创建新对象时使用新设置.如果需要立即应用设置,那么我只是转储旧对象并创建一个新对象.它只取决于应用程序的细节.

如果您在设置屏幕上有"应用"按钮,那么我建议您在保存后重新加载并显示所有值.这样显示器肯定包含实际保存的内容.如果解析了任何设置,这可能很重要.我让用户在特定字段中输入了一个月和日组合,并且他们使用的格式与预期的不同,因此保存的值不正确.通过在Apply之后更新屏幕,可以明显地发现这些类型的错误.

我希望这有帮助!