gpt4 book ai didi

c# - .NET Settings.Reload() 和 Settings.Save() 设置未加载的问题

转载 作者:行者123 更新时间:2023-11-30 17:23:03 24 4
gpt4 key购买 nike

我有一个奇怪的问题,我无法弄清楚。我有一个继承 ApplicationSettingsBase 的自定义设置类。它具有用户范围的设置,如下所示。

    /// <summary>
/// The Last Active Account
/// </summary>
[UserScopedSettingAttribute()]
public AccountKeyClass ActiveAccount
{
get
{
try
{
return (AccountKeyClass)this["ActiveAccount"];
}
catch(Exception error){}
return null;
}
set
{
this["ActiveAccount"] = value;
if (!this.AccountList.Contains(value))
{
//this.AccountList.Add(value);
}
}
}

/// <summary>
/// Account List
/// Key: UserID
/// Value: AccountKeyClass
/// </summary>
[UserScopedSettingAttribute()]
public List<AccountKeyClass> AccountList
{
get
{
try
{
if(this["AccountList"] != null)
return (List<AccountKeyClass>)this["AccountList"];
}
catch(Exception error){}
return null;
}
set { this["AccountList"] = value; }
}

我有两个表单,一个主表单和一个设置表单,用于更改应用程序设置。当我创建 SettingsForm 并更改 AccountList 设置值时,user.config 文件发生了异常变化。我的 SettingsForm 的 Apply/Ok 按钮先调用 Settings.Save() 然后调用 Settings.Reload() 然后关闭表单。问题是当调用 .Reload() 时,Settings.AccountList 变为空。

更重要的是,user.config 文件永远不会改变,如果我关闭应用程序并重新打开,user.config 文件仍然是正确的,但永远不会读入 Settings.AccountList。

如果我从不调用 .Reload(),则会读入 Settings.AccountList。

更新:如果我创建一个列表并保存();从我的 MainForm,然后 AccountList 将从我的 user.config 中读入。但是,如果我使用我的辅助表单 (SettingsForm) 添加到 AccountList 并调用 Save(),则下次运行应用程序时,不会读入设置,并在其位置返回空值。即使我不使用 Reload() 也会发生这种情况。

我认为问题与使用通用列表<>有关。正在保存的 AccountKeyClass 保存为序列化 XML。

最佳答案

我记得 .Reload() 也有类似的问题。只是为了好玩...尝试在发行版中运行它,或者在您的设置中运行任何非 Debug模式(如果您还没有这样做的话)。

关于c# - .NET Settings.Reload() 和 Settings.Save() 设置未加载的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2422908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com