C#的開發(fā)中,無論你是winform開發(fā)還是webform開發(fā),都需要通過config文件來配置一些信息,因此我們也經(jīng)常需要獲取其中的appSettings節(jié)點的值。當(dāng)然,.net已經(jīng)對訪問這個節(jié)點做了封裝,我們可以很方便的訪問該節(jié)點。但是,我覺得還是不夠滿意,因為我需要在獲取不到節(jié)點的時候能夠返回默認(rèn)的值,獲取的時候能夠自動轉(zhuǎn)為我需要的類型,我需要能夠隨時指定config文件,而不僅僅是默認(rèn)的web.config文件或者是*.exe.config文件。尤其最后的那個功能,嘿嘿,別以為這個沒有用,有時候,我們是需要共用一個配置文件的。比如你在開發(fā)Windows服務(wù)的時候,你不會希望你用界面的那個程序和Windows服務(wù)的程序有兩個一樣的配置文件吧
直接貼代碼:
1 /// <summary>
2 /// 獲取AppSetting里面的內(nèi)容
3 /// </summary>
4 /// <typeparam name="T"></typeparam>
5 /// <param name="defaultValue">The default value.</param>
6 /// <param name="key">The key.</param>
7 /// <returns></returns>
8 public static T GetAppSettingValue<T>(T defaultValue, string key)
9 {
10 string value = ConfigurationManager.AppSettings[key];
11 if (!string.IsNullOrEmpty(value))
12 {
13 try
14 {
15 defaultValue = (T)Convert.ChangeType(value, typeof(T));
16 }
17 catch
18 {
19 }
20 }
21 return defaultValue;
22 }
23
24 /// <summary>
25 /// 獲取指定的Config文件的AppSetting里面的指定鍵值對應(yīng)的value值
26 /// </summary>
27 /// <typeparam name="T"></typeparam>
28 /// <param name="defaultValue">The default value.</param>
29 /// <param name="key">The key.</param>
30 /// <param name="file">The file.</param>
31 /// <returns></returns>
32 public static T GetAppSettingValue<T>(T defaultValue, string key, string file)
33 {
34 var map = new ExeConfigurationFileMap
35 {
36 ExeConfigFilename = file
37 };
38 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
39 string value = config.AppSettings.Settings[key].Value;
40
41 if (!string.IsNullOrEmpty(value))
42 {
43 try
44 {
45 defaultValue = (T)Convert.ChangeType(value, typeof(T));
46 }
47 catch
48 {
49 }
50 }
51 return defaultValue;
52 }