@@ -159,17 +159,17 @@ public HasKeys(IConfigurationSource source, IConfigurationTelemetry telemetry, s
159
159
// String accessors
160
160
// ****************
161
161
public string ? AsRedactedString ( )
162
- => AsString ( getDefaultValue : null , validator : null , converter : null , recordValue : false ) ;
162
+ => AsString ( defaultValue : null , validator : null , recordValue : false ) ;
163
163
164
164
public string AsRedactedString ( string defaultValue )
165
- => AsString ( ( ) => defaultValue , validator : null , converter : null , recordValue : false ) ;
165
+ => AsString ( defaultValue , validator : null , recordValue : false ) ;
166
166
167
167
/// <summary>
168
168
/// Beware, this function won't record telemetry if the config isn't explicitly set.
169
169
/// If you can, use <see cref="AsString(string)"/> instead or record telemetry manually.
170
170
/// </summary>
171
171
/// <returns>the string value of the configuration if set</returns>
172
- public string ? AsString ( ) => AsString ( getDefaultValue : null , validator : null , converter : null , recordValue : true ) ;
172
+ public string ? AsString ( ) => AsString ( defaultValue : null , validator : null , recordValue : true ) ;
173
173
174
174
public string AsString ( string defaultValue ) => AsString ( defaultValue , validator : null ) ;
175
175
@@ -178,25 +178,43 @@ public string AsRedactedString(string defaultValue)
178
178
/// If you can, use <see cref="AsString(string, Func<string, bool>?)" /> instead or record telemetry manually.
179
179
/// </summary>
180
180
/// <returns>the string value of the configuration if set and valid</returns>
181
- public string ? AsString ( Func < string , bool > validator ) => AsString ( getDefaultValue : null , validator , recordValue : true ) ;
181
+ public string ? AsString ( Func < string , bool > validator ) => AsString ( defaultValue : null , validator , recordValue : true ) ;
182
182
183
183
public string AsString ( string defaultValue , Func < string , bool > ? validator )
184
- => AsString ( ( ) => defaultValue , validator , recordValue : true ) ;
184
+ => AsString ( defaultValue , validator , recordValue : true ) ;
185
185
186
186
[ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
187
- public string ? AsString ( Func < DefaultResult < string > > ? getDefaultValue , Func < string , bool > ? validator )
187
+ public string ? AsString ( Func < string > ? getDefaultValue , Func < string , bool > ? validator )
188
188
=> AsString ( getDefaultValue , validator , recordValue : true ) ;
189
189
190
190
[ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
191
- public string ? AsString ( Func < DefaultResult < string > > ? getDefaultValue , Func < string , bool > ? validator , Func < string , ParsingResult < string > > converter )
191
+ public string ? AsString ( Func < string > ? getDefaultValue , Func < string , bool > ? validator , Func < string , ParsingResult < string > > converter )
192
192
=> AsString ( getDefaultValue , validator , converter , recordValue : true ) ;
193
193
194
194
[ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
195
- private string ? AsString ( Func < DefaultResult < string > > ? getDefaultValue , Func < string , bool > ? validator , bool recordValue )
195
+ private string ? AsString ( Func < string > ? getDefaultValue , Func < string , bool > ? validator , bool recordValue )
196
196
=> AsString ( getDefaultValue , validator , converter : null , recordValue ) ;
197
197
198
+ [ return : NotNullIfNotNull ( nameof ( defaultValue ) ) ]
199
+ private string ? AsString ( string ? defaultValue , Func < string , bool > ? validator , bool recordValue )
200
+ {
201
+ var result = GetStringResult ( validator , converter : null , recordValue ) ;
202
+ if ( result is { Result : { } ddResult , IsValid : true } )
203
+ {
204
+ return ddResult ;
205
+ }
206
+
207
+ if ( defaultValue is null )
208
+ {
209
+ return null ;
210
+ }
211
+
212
+ Telemetry . Record ( Key , defaultValue , recordValue , ConfigurationOrigins . Default ) ;
213
+ return defaultValue ;
214
+ }
215
+
198
216
[ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
199
- private string ? AsString ( Func < DefaultResult < string > > ? getDefaultValue , Func < string , bool > ? validator , Func < string , ParsingResult < string > > ? converter , bool recordValue )
217
+ private string ? AsString ( Func < string > ? getDefaultValue , Func < string , bool > ? validator , Func < string , ParsingResult < string > > ? converter , bool recordValue )
200
218
{
201
219
var result = GetStringResult ( validator , converter , recordValue ) ;
202
220
return TryHandleResult ( Telemetry , Key , result , recordValue , getDefaultValue , out var value ) ? value : null ;
0 commit comments