C#的配置和设置组件

时间:2009-06-08 14:16:06

标签: c#

我开始为应用程序设计配置和设置组件。 我需要一种简单的方法来读取字典样式设置,还需要一种将简单数组存储到持久性级别的方法。

是否有常用的组件? (像log4net一样用于记录) 我应该考虑哪些选择?

7 个答案:

答案 0 :(得分:5)

你真的不需要那样做:.NET BCL已经has你需要的一切。

答案 1 :(得分:4)

看看App.Config和ConfigurationManager class

答案 2 :(得分:4)

如果展开SolutionExplorer中的Properties文件夹,则应找到Settings.Settings项。双击此按钮将打开设置编辑器。这使您可以声明并提供可以作用于应用程序或当前用户的设置的初始值。由于值保存在独立存储中,因此您无需担心用户正在执行的权限。

对于一个小例子:

我创建了一个名为Drink的新字符串设置和名为drinkTextBox的TextBox。将当前值分配给文本框的代码是:

drinkTextBox.Text = Properties.Settings.Default.Drink;

并更新持久值:

Properties.Settings.Default.Drink = drinkTextBox.Text;
Properties.Settings.Default.Save();

答案 3 :(得分:3)

根据您希望的灵活程度,您可以使用“设置”设计器中的构建(转到“项目属性”>“设置”),然后可以在其中添加设置。

这些是强类型的,可通过代码访问。 它具有内置功能,如保存,加载和重新加载

答案 4 :(得分:2)

我们经常创建一个密封类,它具有许多属性,用于包装对System.Configuration.ConfigurationManager类的调用。这允许我们使用类和app / web.config文件提供的标准配置管理功能,但使其他类很容易访问数据。

例如,我们可以创建一个属性,将连接字符串公开为数据库

public static string NorthwindConnectionString
{
  get{return ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString
}

虽然它围绕一行代码创建了一个包装器,我们通常会尝试避免它,但它确实可以通过intellisense访问某些配置属性,并提供一些关于底层配置数据位置更改的绝缘。如果我们想将连接字符串移动到注册表,我们可以这样做,而不会对应用程序产生重大影响。

当我们拥有更大的团队或需要将代码从一个团队移交给另一个团队时,我们发现这最有用。它使人们无需记住在配置文件中命名的各种设置,甚至存储配置信息的位置(配置文件,数据库,注册表,ini文件等)

答案 5 :(得分:0)

对于noddy应用程序,我使用appSettings。对于企业应用,我通常会创建一些自定义配置部分CodeProject has some excellent articles on this

对于键/值对的场景,我可能会使用something like this

答案 6 :(得分:0)

在标准设置中构建字典

使用标准设置,无法存储字典样式设置。

模拟System.Collections.Specialized。 StringDictionary , 我过去所做的是使用了两个System.Collections.Specialized。 StringCollection 类型设置(这是你设置类型的一个选项)。 我创建了一个名为Keys,另一个名为values。在需要这些设置的类中,我创建了一个静态构造函数并循环遍历两个StringCollections并将StringDictionary构建为公共静态属性。然后在需要时可以使用该词典。

public static StringDictionary NamedValues = new StringDictionary();
public static ClassName() // static construtor
{
  StringCollection keys = Properties.Settings.Default.Keys;
  StringCollection vals = Properties.Settings.Default.Values;
  for(int i = 0; i < keys.Count(); i++)
  {
     NamedValues.Add(keys[i], vals[i]);
  }
}