使用App.config设置强类型变量

Mas*_*Net 20 c# app-config configuration-files .net-3.5

我是运行.NET 3.5的C#新手,我想在App.config中存储一堆应用程序默认值,因为设置可能因服务器环境(例如开发,登台,生产)而异.我想要做的是类似于StackOverflow文章中描述的内容,但我也希望能够使用非字符串值(例如int,bool).像这样的东西(名称值只是例子,顺便说一句):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <applicationSettings>
        <MyApp>
            <setting name="InitText" serializeAs="String">
                <value>Hello</value>
            </setting>
            <setting name="StartAt" serializeAs="Integer">
                <value>5</value>
            </setting>
            <setting name="IsWeekend" serializeAs="Boolean">
                <value>True</value>
            </setting>
        </MyApp>
    </applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有人可以提供一个如何执行此操作的示例,以及如何通过C#检索值?我已经看过很多需要使用的例子,但是我不确定我是否需要这些元素,如果需要,如何创建它们.

Joã*_*elo 31

如何使用.NET Framework 的应用程序设置体系结构.您可以对默认值进行强类型访问.

在Windows应用程序项目中,将在Resources文件夹中自动创建Settings文件.然后,您可以像在问题中显示的那样添加保存在App.config文件中的应用程序设置.

例如:

int i = Settings.Default.IntSetting;

bool b = Settings.Default.BoolSetting;
Run Code Online (Sandbox Code Playgroud)

编辑: 如果您的项目不包含设置文件,您可以通过添加新项目然后选择设置文件来添加一个.(右键单击项目文件并执行:添加 - >新项目 - >设置文件).在我的情况下,我将其命名为"设置",但您可以根据需要为其命名.

添加文件后,visual studio将打开设置设计器,您可以在其中添加强类型设置.根据您的说法,您应该在应用程序范围而不是用户处设置设置.然后构建项目,您应该可以访问具有文件名的类.

  • 这是一个很好的答案......但它没有外部化用户更改的设置.如果更改.settings文件中的值,则必须重建解决方案以获取新值!用户往往会对此类事情感到沮丧.:) (3认同)
  • 它并没有真正融入框架中,而是一种IDE。当向C#/ VB项目中添加.settings文件时,该文件用于生成Settings类的代码,该类将配置设置包装为适当类型的属性,并进行所有必要的强制转换等。 (2认同)

Jay*_*ayG 21

Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"])
Run Code Online (Sandbox Code Playgroud)

  • 或者Boolean.TryParse(...).http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx (10认同)
  • 这不会失败要求的"强类型变量"部分,你仍然在app.config中存储一个字符串 (8认同)