转:http://www.cnblogs.com/marvin/archive/2011/07/29/EfficiencyAppSetting.html

C#的开发中,无论你是winform开发还是webform开发,都需要通过config文件来配置一些信息,因此我们也经常需要获取其中的 appSettings节点的值。当然,.net已经对访问这个节点做了封装,我们可以很方便的访问该节点。但是,我觉得还是不够满意,因为我需要在获取 不到节点的时候能够返回默认的值,获取的时候能够自动转为我需要的类型,我需要能够随时指定config文件,而不仅仅是默认的web.config文件 或者是*.exe.config文件。尤其最后的那个功能,嘿嘿,别以为这个没有用,有时候,我们是需要共用一个配置文件的。比如你在开发Windows 服务的时候,你不会希望你用界面的那个程序和Windows服务的程序有两个一样的配置文件吧

直接贴代码:

/// <summary>
/// 获取AppSetting里面的内容
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="defaultValue">The default value.</param>
/// <param name="key">The key.</param>
/// <returns></returns>
public static T GetAppSettingValue<T>(T defaultValue, string key)
{
string value = ConfigurationManager.AppSettings[key];
if (!string.IsNullOrEmpty(value))
{
try
{
defaultValue = (T)Convert.ChangeType(value, typeof(T));
}
catch
{
}
}
return defaultValue;
} /// <summary>
/// 获取指定的Config文件的AppSetting里面的指定键值对应的value值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="defaultValue">The default value.</param>
/// <param name="key">The key.</param>
/// <param name="file">The file.</param>
/// <returns></returns>
public static T GetAppSettingValue<T>(T defaultValue, string key, string file)
{
var map = new ExeConfigurationFileMap
{
ExeConfigFilename = file
};
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
string value = config.AppSettings.Settings[key].Value; if (!string.IsNullOrEmpty(value))
{
try
{
defaultValue = (T)Convert.ChangeType(value, typeof(T));
}
catch
{
}
}
return defaultValue;
}

最新文章

  1. LA 5713 秦始皇修路 MST
  2. Calico在Kubernetes中的搭建
  3. Win7_SendTo文件夹
  4. iOS 圆角那些事(转)
  5. SQL执行SQL语句提示 &quot;内存不足&quot;(insufficient memory....)的解决方法
  6. 学习pthreads,使用互斥量进行同步
  7. Eureka的功能特性及相关配置
  8. [经验交流] k8s mount 文件到容器目录
  9. 计算机网络实验 UDP套接字编程
  10. layui 弹窗的iframe 父子界面相互传值
  11. 图论杂项细节梳理&amp;模板(虚树,圆方树,仙人掌,欧拉路径,还有。。。)
  12. MySQL查询命令_SELECT 子查询
  13. thymeleaf给bootstrap自定义变量赋值
  14. css3硬件加速
  15. mybatis主键自增长
  16. Traceroute(路由追踪)的原理及实现
  17. c语言学习——安装
  18. QMetaEnum利用Qt元数据实现枚举(enum)类型值及字符串转换
  19. log4j log for java
  20. Can not find -lXXXX

热门文章

  1. Android 使用Facebook的 Stetho工具
  2. java学习——abstract 和 final
  3. 上拉、下拉UITableView,交互式 模态弹出(自定义弹出动画)
  4. java调试一
  5. virtual box 改变已经创建的虚拟系统分配的硬盘
  6. codeforces 336D Vasily the Bear and Beautiful Strings(组合数学)
  7. CodeForces 25E Test KMP
  8. unzip解压中文文件名乱码
  9. EXW_FOB_CIF_CFR 外贸报价方式&amp;条款之间的区别与联系
  10. Contains Duplicate 解答