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

时间:2009-11-20 17:42:37

标签: c# .net-3.5 configuration-files app-config

我是运行.NET 3.5的C#新手,我想在App.config中存储一堆应用程序默认值,因为设置可能因服务器环境(例如开发,登台,生产)而异。我想要做的是类似于this StackOverflow article中描述的内容,但我也希望能够使用非字符串值(例如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>

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

4 个答案:

答案 0 :(得分:30)

如何使用.NET Framework的Application Settings architecture呢?您可以对默认值进行强类型访问。

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

例如:

int i = Settings.Default.IntSetting;

bool b = Settings.Default.BoolSetting;

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

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

答案 1 :(得分:18)

Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"])

答案 2 :(得分:2)

JayG建议的东西可以由Visual Studio自动完成。使用appsettings向导as described in the MSDN。整个Application Settings基础设施也值得一读。

答案 3 :(得分:-1)

听起来您想拥有自定义<configSection>。基本上,它的工作原理如下:

- 创建具有正确默认值等的配置类,并设置一个漂亮的继承结构,以便根据您的web.config设置自动加载。 - 将您的配置部分添加到web.config,指定将加载您的设置的“类型”,以便.NET框架知道要初始化的内容

您可以在MSDN library上找到有关它的各种信息。这些例子是asp.net,但它们也适用于app配置。