C# 在c语言中处理通用配置文件#
我记录了我自己,但无法发现或理解如何才能实现我想要实现的目标 事情是这样的:C# 在c语言中处理通用配置文件#,c#,configuration,app-config,application-settings,appsettings,C#,Configuration,App Config,Application Settings,Appsettings,我记录了我自己,但无法发现或理解如何才能实现我想要实现的目标 事情是这样的: 我无法使用注册表(不确定我是否拥有客户端计算机的权限) 它需要通用和透明(代码端) 我在项目文件夹中有配置设置,比如说: 解决方案 项目1 许多代码文件夹 背景 用户级 第一环境设置 第二环境设置 应用程序级别 第一环境设置 第二环境设置 项目2 现在我有了一个设置工厂,它(应该)在*.settings中实例化(或者至少赋值)我的应用程序设置 我想要一些像: public static vo
- 我无法使用注册表(不确定我是否拥有客户端计算机的权限)
- 它需要通用和透明(代码端)
- 解决方案
- 项目1
- 许多代码文件夹
- 背景
- 用户级
- 第一环境设置
- 第二环境设置
- 应用程序级别
- 第一环境设置
- 第二环境设置
- 用户级
- 项目2
- 项目1
public static void LoadSetting()
{
var env = ConfigurationManager.AppSettings["environnement"];
switch (env)
{
case "env1": ConfigurationManager.OpenExeConfiguration("Setting/AppLevel/firstEnv.settings");
break;
case "env2": ConfigurationManager.OpenExeConfiguration("Setting/AppLevel/secondEnv.settings");
break;
default : ConfigurationManager.OpenExeConfiguration("Setting/AppLevel/secondEnv.settings");
break;
}
}
和app.config中的“(键,值)”
<applicationSettings>
<add name="environnement" value="env1"/>
</applicationSettings>
当我想切换“环境”时
ConfigurationManager.appsettings["environnement"] = "env2";
SettingsFactory.LoadSettings();
关于如何做到这一点或任何设计模式改进,有什么建议吗
此外,我将AppLevel设置和Userlevel设置分开,但它只不过是一对(key,value)。但是dev更容易使用。这样,我可以通过代码(2行)或编辑app.config轻松修改环境
<applicationSettings>
<add name="environnement" value="env1"/>
</applicationSettings>
谢谢,我建议您创建自己的类来存储每个环境特有的设置,然后使用XmlSerialier将它们序列化/反序列化为自己的文件 下面是一个关于如何使用XmlSerializer的非常简单的示例
静态列表反序列化FromXML(字符串路径)
{
XmlSerializer反序列化器=新的XmlSerializer(typeof(List));
TextReader TextReader=新的StreamReader(路径);
列表设置;
设置=(列表)反序列化程序。反序列化(文本阅读器);
textReader.Close();
返回设置;
}
然后将各种环境设置文件的路径存储在app.config中
<appSettings>
<add key="env1" value="C:\temp\env1-settings.xml"/>
<add key="env2" value="C:\temp\env2-settings.xml"/>
</appSettings>
用如下内容加载它们:
List<YourSettingsClass> envSettings = DeserializeFromXML(ConfigurationManager.AppSettings["env2"]);
List envSettings=DeserializeFromXML(ConfigurationManager.AppSettings[“env2”]);
所以我需要手动处理加密部分等?如果您希望对设置的内容进行加密,则选择“是”。查看此链接
List<YourSettingsClass> envSettings = DeserializeFromXML(ConfigurationManager.AppSettings["env2"]);