@@ -186,6 +186,8 @@ public virtual string GetValue(string sectionName, string keyName, string defaul
186186 public virtual bool GetValue ( string sectionName , string keyName , bool defaultValue ,
187187 BooleanConverter booleanConverter = null )
188188 {
189+ booleanConverter = booleanConverter ?? Settings . BooleanConverter ;
190+
189191 var booleanValue = GetRawValue < string > ( sectionName , keyName , null ) ;
190192 if ( string . IsNullOrWhiteSpace ( booleanValue ) )
191193 {
@@ -198,13 +200,6 @@ public virtual bool GetValue(string sectionName, string keyName, bool defaultVal
198200 return defaultValue ;
199201 }
200202
201- if ( booleanConverter != null && booleanConverter . CanConvertFrom ( typeof ( string ) ) )
202- {
203- var value = booleanConverter . ConvertFrom ( booleanValue ) ;
204- if ( value is bool convertedBoolean )
205- return convertedBoolean ;
206- }
207-
208203#pragma warning disable IDE0046 // Convert to conditional expression
209204 foreach ( var converter in YesNoBoolConverters )
210205 {
@@ -216,14 +211,21 @@ public virtual bool GetValue(string sectionName, string keyName, bool defaultVal
216211 }
217212#pragma warning restore IDE0046 // Convert to conditional expression
218213
219- return bool . TryParse ( booleanValue , out var parseBoolean )
220- ? parseBoolean
221- // if some day Boolean.ToString(IFormatProvider) will work
222- // https://msdn.microsoft.com/en-us/library/s802ct92(v=vs.110).aspx#Anchor_1
223- : true . ToString ( Settings . Culture ) . ToLowerInvariant ( ) . Equals (
224- booleanValue ,
225- StringComparison . InvariantCultureIgnoreCase
226- ) ;
214+ if ( bool . TryParse ( booleanValue , out var parseBoolean ) )
215+ return parseBoolean ;
216+
217+ // if some day Boolean.ToString(IFormatProvider) will work
218+ // https://msdn.microsoft.com/en-us/library/s802ct92(v=vs.110).aspx#Anchor_1
219+ if ( true . ToString ( Settings . Culture ) . ToLowerInvariant ( ) . Equals ( booleanValue , StringComparison . InvariantCultureIgnoreCase ) )
220+ return true ;
221+
222+ if ( booleanConverter == null || ! booleanConverter . CanConvertFrom ( typeof ( string ) ) )
223+ return defaultValue ;
224+
225+ var value = booleanConverter . ConvertFrom ( booleanValue ) ;
226+ return value is bool convertedBoolean
227+ ? convertedBoolean
228+ : defaultValue ;
227229 }
228230
229231 /// <summary>
@@ -437,6 +439,7 @@ public virtual bool SetValue(string sectionName, string keyName, bool value,
437439 }
438440 }
439441
442+ booleanConverter = booleanConverter ?? Settings . BooleanConverter ;
440443 return SetValue ( sectionName , keyName , ( null == booleanConverter )
441444 ? value . ToString ( Settings . Culture ?? CultureInfo . InvariantCulture ) . ToLowerInvariant ( )
442445 : booleanConverter . ConvertToString ( value )
0 commit comments