.net - 如何在.NET中针对不同环境使用不同的.settings文件?

标签 .net settings application-settings

.NET 允许您使用 .settings 文件来管理应用程序设置。我想以一种可以执行以下操作的方式单独存储生产、开发和测试设置:

EnvironmentSettings environmentSettings;

// get the current environment (Production, Development or Test)
ApplicationEnvironment Environment = (ApplicationEnvironment)
    Enum.Parse(typeof(ApplicationEnvironment), Settings.Default.ApplicationEnvironment);

switch (Environment)
{
    case ApplicationEnvironment.Production:
        environmentSettings = Settings.Production;
        break;
    ...
}

string reportOutputLocation = environmentSettings.ReportOutputLocation;

基本上,我想要两个单独的 Settings 类:存储所选环境和非环境特定属性的常规 Settings 类,以及名为 EnvironmentSettings 的第二个类的 3 个静态实例。使用的实例应取决于常规Settings类中指定的环境。

除了在静态构造函数或其他东西中手动设置所有这些设置的值之外,有什么方法可以做到这一点吗?如果我必须这样做,我宁愿只拥有一个大的 Settings 类,其中包含“DevOutputLocation”、“LiveOutputLocation”等属性。

我的项目中可以有多个 .settings 文件,但这只是创建了不从彼此派生的单独的类。因此,我可以创建 DevelopmentSettings.settings、ProductionSettings.settings 和 TestSettings.settings 文件并赋予它们相同的属性,但是随后我需要到处使用一堆 switch 语句来确定要使用哪个类,因为它们不是从公共(public)类派生的.

最佳答案

一个想法是,在一系列静态值之间切换听起来像是一种相当令人担忧的做事方式。 我建议查找单例模式。此模式为您提供了一个在对该类的所有引用之间共享的单个类实例,但是当它首次加载时,您可以执行正常的初始化位来检查您的环境并相应地设置值。

同样,您不会考虑设计一个接口(interface)并让每个类实现该接口(interface),而不是使用开关来作用于不同的类吗?

关于.net - 如何在.NET中针对不同环境使用不同的.settings文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247191/

相关文章:

c# - 当构造函数注入(inject)的参数在配置和运行时已知时,从 AutoFac 获取类实例的最佳方法是什么

c# - 当版本号改变时,如何升级 user.config 中的所有设置?

c# - 在 Windows 7 和 Vista 中存储应用程序数据的位置

c# - ":"处或附近的 Npgsql 语法错误

.net - 如何使用NEST在Elasticsearch中创建多字段映射

deployment - 将 dll 的配置文件移动到调用 dll 的应用程序

.net - 如何在代码中使用在 Visual Studio 中创建的数据连接?

.net - 有没有办法在没有 GoTo 语句的情况下写这个?

.net - 显示我的 nuget 的源代码

c# - 为什么这个通用列表没有保存在应用程序设置中?