andrew4582

AppSettingsParser

Aug 4th, 2010
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.15 KB | None | 0 0
  1. using System;
  2. using System.Configuration;
  3. using System.Diagnostics;
  4.  
  5. namespace BA.Core.Configuration {
  6.     public sealed class AppSettingsParser {
  7.         public static T Parse<T>(string settingName) {
  8.             return Parse<T>(settingName,default(T),false,false,false);
  9.         }
  10.         public static T Parse<T>(string settingName,T defaultValue) {
  11.             return Parse<T>(settingName,defaultValue,false,false,false);
  12.         }
  13.         public static T Parse<T>(string settingName,T defaultValue,bool logError) {
  14.             return Parse<T>(settingName,defaultValue,logError,false,false);
  15.         }
  16.         public static T Parse<T>(string settingName,T defaultValue,bool logError,bool throwError) {
  17.             return Parse<T>(settingName,defaultValue,logError,throwError,false);
  18.         }
  19.         public static T ParseEnum<T>(string settingName) {
  20.             return Parse<T>(settingName,default(T),false,false,true);
  21.         }
  22.         public static T ParseEnum<T>(string settingName,T defaultValue) {
  23.             return Parse<T>(settingName,defaultValue,false,false,true);
  24.         }
  25.         public static T ParseEnum<T>(string settingName,T defaultValue,bool logError) {
  26.             return Parse<T>(settingName,defaultValue,logError,false,true);
  27.         }
  28.         public static T ParseEnum<T>(string settingName,T defaultValue,bool logError,bool throwError) {
  29.             return Parse<T>(settingName,defaultValue,logError,throwError,true);
  30.         }
  31.         private static T Parse<T>(string settingName,T defaultValue,bool logError,bool throwError,bool isEnum) {
  32.             T parsedValue = default(T);
  33.             string settingValue = ConfigurationManager.AppSettings[settingName];
  34.             try {
  35.                 if(settingValue != null) {
  36.                     if(isEnum) {
  37.                         parsedValue = (T)Enum.Parse(typeof(T),settingValue);
  38.                     }
  39.                     else
  40.                         parsedValue = (T)Convert.ChangeType(settingValue,typeof(T));
  41.                 }
  42.                 else {
  43.                     if(throwError)
  44.                         throw new ArgumentNullException(settingName,"The AppSettings value is missing for " + settingName);
  45.  
  46.                     if(logError) {
  47.                         EventLog.WriteEntry("AppSettingsHelper","The AppSettings value is missing for " + settingName,EventLogEntryType.Warning);
  48.                     }
  49.                     return defaultValue;
  50.                 }
  51.             }
  52.             catch(Exception error) {
  53.                 parsedValue = defaultValue;
  54.                 if(logError) {
  55.                     if(!string.IsNullOrEmpty(settingValue))
  56.                         EventLog.WriteEntry("AppSettingsHelper","The AppSettings value is an invalid " + typeof(T).Name + " and could not be parsed. " + settingName + " - " + settingValue + " ERROR: " + error.Message,EventLogEntryType.Warning);
  57.                     else
  58.                         EventLog.WriteEntry("AppSettingsHelper","The AppSettings value is missing for " + settingName + " ERROR: " + error.Message,EventLogEntryType.Warning);
  59.                 }
  60.                 if(throwError)
  61.                     throw;
  62.             }
  63.             return parsedValue;
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment