.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/