我必须从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