gpt4 book ai didi

c# - 编辑/修改 C# 应用程序设置

转载 作者:太空狗 更新时间:2023-10-29 23:49:48 24 4
gpt4 key购买 nike

.NET 配置设置功能并不像我希望的那样灵活。如果我明白Application Settings正确地,我在何时可以更改/编辑设置方面受到限制。在 C# 中,应用程序设置分为两种不同的类型或范围(“应用程序”和“用户”),但两者在如何更改或修改方面都有限制。下表展示了差异:

   SCOPE:   |  EDIT AT DESIGN-TIME: |     EDIT AT RUN-TIME:     |  EDIT BETWEEN SESSIONS:---------------------------------------------------------------------------------------   User     |   Setings.settings    |  Settings.Default.Save()  |     *Not supported*       Application |   Setings.settings    |      *Not supported*      |  edit  app.exe.config   

是否有任何“内置”设置功能允许我通过所有三种机制编辑设置?使用配置文件的主要动机之一是允许用户更改默认值而无需重新构建源代码(可以通过Application-scoped 设置来完成)。但是,不应强制用户编辑.config 文件;他们还应该能够在运行时进行跨设置持续存在的更改(就像用户范围设置一样)。肯定有某种机制可以提供这两种功能。

底线:为什么不能在运行时编辑应用程序设置 (app.exe.config)?那会解决我所有的问题。 我知道这可能会给共享同一台机器的用户带来问题。但是现在还有谁这样做呢?

可能的解决方法:是否可以将用户设置配置文件的默认存储位置更改为非隐藏文件夹?


更新(澄清):我的意思是,我希望能够在设计时运行时更改默认设置 < strong>in-between sessions(即,通过编辑配置文件)。但是当使用 Settings.settings 提供的内置 C# 持久性机制时,我必须从 3 个中最多选择 2 个。我是否遗漏了什么?还有其他我不知道的选择吗?

[用例:我想为连接字符串存储一个“默认”数据库名称,但我希望用户能够在运行时指定不同的数据库(从而成为该用户的"new"默认值)。但我也希望能够覆盖配置文件中的默认设置,而无需重新运行或重新构建应用程序。]

[更好的用例:(回应评论)

我有一个计算模型,其配置文件包含模型中参数的默认值。用户 A 启动模型并决定更改几个参数的值。该更改需要持续该用户(即在运行时编辑)的所有 future session 。随后,该用户希望共享修改后的内容与他的团队的配置文件(例如,通过版本控制存储库或电子邮件)。这将允许用户 B 更新她的默认参数值(以匹配用户 A 的参数值),而无需在应用程序中手动更改它们(即,在 session 之间编辑)。所有这些模组都应该在设计之后发生-时间。]

*我意识到我可以“技术上”编辑位于隐藏的 AppData 文件夹中的 app.exe.config 文件中的用户范围设置,但这是一个隐藏文件,并非所有用户都有足够的权限来查看它。 (但请参阅上面的“潜在解决方法”。)

最佳答案

您需要做的就是结合这两种技术!

在 session 开始时,从配置文件中读取配置的设置,并将其存储到可写的全局静态变量(或任何形式的持久性)中。

然后当用户决定更改此设置时,只需更改设置的值即可。

public static Program {

public static string ConnectionString { get; set; }

void Main(string connectionString) {
ConnectionString = connectionString;
}

}

public class SomeOtherClass {
public void SomeOtherMethod () {
Program.ConnectionString = "new value";
}
}

这只是您如何使用它的一个非常简单的示例。请注意,您可能会选择从应用程序设置中读取默认值,而不是将字符串作为参数传递给程序。您还可能将用户配置的连接字符串存储到某种数据库中,以便每个用户的数据库可能不同。

关于c# - 编辑/修改 C# 应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273798/

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