在C#/ .NET中持久存储设置/变量

时间:2010-06-04 19:09:31

标签: c# .net settings

好的,这是一个全新的问题,所以请原谅我。

存储变量以保持变量并且可以恢复的最佳方法是什么?我有一个小应用程序,使用大约10个变量(字符串和十进制)作为设置。目前,我将它们全部转换为字符串,如果需要,将它们放入数组并将数组序列化为文件。

如果我想要添加变量,这是一种痛苦。所以,我正在考虑使用哈希表并将其序列化。同样,不确定最佳方法是什么。

我的一些要求是数据需要安全存储(加密),并且必须可供其他应用程序访问(我还有两个其他小应用程序可以读取这些设置)。

我知道我过于复杂,过于简单。这必须在几乎所有构建的应用程序中完成。

TIA

8 个答案:

答案 0 :(得分:4)

最简单,最有效和最灵活的方法是创建一个类,添加设置,然后在需要时序列化/反序列化。该类的源代码可以在其他程序集中重用,持久性可以在任何地方。由于您的安全要求,请确保此类知道如何序列化/反序列化自身。这可确保实现与课程保持一致。然后调用程序集只需要通过调用静态/共享方法来创建对象。

这为您提供强类型设置,版本控制,添加新设置的能力,甚至复杂数据类型(其他类)。这个对象甚至可以作为参数传递给其他对象,并且因为它支持序列化,所以它非常灵活。

实施例

http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/68c200c2-4aa4-48dc-95be-6fe077fd10f4/

上查看操作方法(对象类=>二进制序列化=>到内存=>加密=>保存到文件)

参考

答案 1 :(得分:3)

使用应用程序/ Web配置文件,并使用ConfigurationManager.AppSettings [configurationItemName]方法。 (在System.Configuration中)

答案 2 :(得分:1)

为什么不把它们放在app.config中? (或web.config)

答案 3 :(得分:1)

您肯定可以使用.Net Framework中的“应用程序设置”。

http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx

答案 4 :(得分:0)

如果我还是使用了数据库,我可能会在那里添加一个表并存储它们,否则我想我会使用某种类型的XML文件,我不愿意添加额外的复杂性。数据库只有几个设置。
使用这些解决方案中的任何一个,您都可以轻松添加更多设置(旧应用程序将忽略它们)以及指定数据类型(作为XML中的属性)。

答案 5 :(得分:0)

您可以将值存储在系统注册表中:

获得一把钥匙:

// This will create the key if it does not exist.
String keyPath = "Sofware\Foo\Bar";  // use "Software\Company\App" or similar
RegistryKey appKey = Registry.CurrentUser.CreateSubKey(keyPath);

保存值:

String config = "SomeConfigurationValue";
appKey.SetValue("ConfigString", config);

加载值:

String config = (string)appKey.GetValue("ConfigString", "Default Value");

答案 6 :(得分:0)

只是为了确保我理解

<强>要求: 1.将应用程序的用户特定设置存储在文件或数据库中 2.有时,您可以添加其他属性。

这是基于网络的吗?赢形式?,wcf?

我最初的想法是在持久化时包含版本号。

每次更新设置类时,都要创建一个继承自上一版本的新设置类。添加新属性并更新版本号。

存储: 在DB中,有两个字段:1-版本2-序列化设置数据。 在一个文件中,有两个条目1-版本2-序列化设置数据。

序列化时,请确保包含设置类版本号。

反序列化时,使用Factory检索设置类的正确版本。

要记住的一件事是,您必须考虑应用程序中较旧的设置实例。

如果您今天添加“背景颜色”属性,则今天之前的所有设置文件都无法访问它。您需要确保应用程序可以处理这种情况。

因此,如果工厂找到旧版本的设置类,它可以使用保存的数据创建该类的最新版本,并使用默认值填充新属性。

祝你好运,

帕特里克

答案 7 :(得分:0)

将设置存储到类中,并将这些对象序列化为隔离存储。确保将隔离级别设置为用户级别,以便其他应用程序可以读取当前用户的设置。

http://msdn.microsoft.com/en-us/library/8dzkff1s%28VS.80%29.aspx

  

IsolatedStorageFile,派生   来自IsolatedStorage,提供基本功能   存储装配和管理   应用文件。一个例子   IsolatedStorageFile类代表一个   单个商店位于文件中   系统