public static T AssertConfigValueIsPresent <T>( this IConfigProvider provider, string key, T valueIfNotPresent = default(T)) { T val = provider.GetPropertyValue <T>(key); if (EqualityComparer <T> .Default.Equals(val, default(T))) { if (valueIfNotPresent.Equals(default(T))) { throw new ArgumentNullException("Config value is not present : " + key); } else { val = valueIfNotPresent; } } return(val); }