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

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

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

如果我想添加一个变量,那就太痛苦了。 所以,我正在考虑使用哈希表并将其序列化。 同样,不确定最好的方法是什么。

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

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

TIA

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

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

请参阅http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/68c200c2-4aa4上的操作方法 (对象类=>二进制序列化=>到内存=>加密=>保存到文件) -48直流-95be-6fe077fd10f4 /

参考

  • 版本容忍序列化在http://msdn.microsoft.com/en-us/library/ms229752(VS.80).aspx

  • ISerializable接口 , url为http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

  • 隔离存储在http://msdn.microsoft.com/en-us/library/3ak841sy.aspx

  • 加密任务 , url为http://msdn.microsoft.com/en-us/library/7yx4d854.aspx

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

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

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

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

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

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

获得一把钥匙:

// 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"); 

只是为了确保我理解

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

这个网络是基于? 赢forms?,wcf?

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

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

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

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

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

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

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

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

祝好运,

帕特里克

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

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

IsolatedStorageFile派生自IsolatedStorage,提供存储的程序集和应用程序文件的基本管理。 IsolatedStorageFile类的实例表示位于文件系统中的单个存储。