其他分享
首页 > 其他分享> > 我必须从ConfigurationSection派生以支持每个用户的设置吗?

我必须从ConfigurationSection派生以支持每个用户的设置吗?

作者:互联网

我在玩.NET的配置支持(ConfigurationManager类和相关的支持类).我想编写一个安装后的应用程序:

>在foo.exe.config中具有默认设置(在“程序文件”中).
>用户以后可以使用应保留的非默认值覆盖设置.
>用户的首选项应保留在用户的配置文件中,因为他不应该对Program Files目录具有写权限.

设置用户后,应用程序应使用其首选项,否则应使用默认设置.

看起来这应该很容易-这是一种非常常见的模式.但是我对此的尝试遇到了麻烦,我想知道我是否采取了正确的方法.

以下代码生成运行时异常“锁定时无法编辑ConfigurationSection属性”.

using System;
using System.Configuration;

namespace DemoAppSettingsProblem
{
    class Program
    {
        static void Main(string[] args)
        {
            Configuration userConfig =
                ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
            if ( userConfig.AppSettings.Settings["foo"] != null )
                userConfig.AppSettings.Settings.Remove("foo");

            userConfig.AppSettings.Settings.Add("foo", "The string is foo.");

            userConfig.Save(ConfigurationSaveMode.Modified);    // exception!
        }
    }
}

问题是.NET定义的< appSettings>该部分使用默认的allowExeDefinition = MachineToApplication声明(请参见Microsoft的Irena Kennedy的nice post).这禁止将该部分写入用户的配置文件(本地或漫游).

因此,我假设我需要使用allowExeDefinition = MachineToLocalUser定义自己的部分.但是据我从MSDN文档可以得知,这意味着我需要创建自己的配置类,该类从ConfigurationSection派生.那里的例子使我朝着比我期望的方向更多的工作,这通常会引起我的警钟,表明我做错了事.

真的很难实现吗? .NET是否提供一种简单的方法来支持此功能,还是我应该完全采用另一种方法?

解决方法:

我使用了设置功能,它可以为您将用户设置写入应用程序配置…

http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx

标签:configurationmanager,configuration,settings,c,net
来源: https://codeday.me/bug/20191210/2103121.html