@@ -621,42 +621,42 @@ internal readonly struct StructConfigurationResultWithKey<T>(IConfigurationTelem
621
621
public readonly ConfigurationResult < T > ConfigurationResult = configurationResult ;
622
622
623
623
public T WithDefault ( T defaultValue )
624
- => WithDefault ( getDefaultValue : ( ) => defaultValue ) ;
625
-
626
- public T WithDefault ( Func < DefaultResult < T > > getDefaultValue )
627
624
{
628
- if ( TryHandleResult ( Telemetry , Key , ConfigurationResult , RecordValue , getDefaultValue , out var value ) )
625
+ if ( ConfigurationResult is { Result : { } ddResult , IsValid : true } )
629
626
{
630
- return value ;
627
+ return ddResult ;
631
628
}
632
629
633
- return default ; // should never be invoked because we have a value for getDefaultValue
630
+ RecordTelemetry ( Telemetry , Key , RecordValue , defaultValue ) ;
631
+ return defaultValue ;
634
632
}
635
633
636
634
public T ? OverrideWith ( in StructConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler )
637
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue : null ) ;
635
+ => CalculateOverrides ( in otelConfig , overrideHandler , defaultValue : null ) ;
638
636
639
637
public T OverrideWith ( in StructConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , T defaultValue )
640
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue : ( ) => defaultValue ) . Value ;
638
+ => CalculateOverrides ( in otelConfig , overrideHandler , defaultValue ) . Value ;
641
639
642
- public T OverrideWith ( in StructConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , Func < DefaultResult < T > > getDefaultValue )
643
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue ) . Value ;
644
-
645
- [ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
646
- private T ? CalculateOverrides ( in StructConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , Func < DefaultResult < T > > ? getDefaultValue )
640
+ [ return : NotNullIfNotNull ( nameof ( defaultValue ) ) ]
641
+ private T ? CalculateOverrides ( in StructConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , T ? defaultValue )
647
642
{
648
643
if ( overrideHandler . TryHandleOverrides ( Key , ConfigurationResult , otelConfig . Key , otelConfig . ConfigurationResult , out var overridden ) )
649
644
{
650
645
return overridden ;
651
646
}
652
647
653
- if ( TryHandleResult ( Telemetry , Key , ConfigurationResult , RecordValue , getDefaultValue , out var value ) )
648
+ if ( ConfigurationResult is { Result : { } ddResult , IsValid : true } )
654
649
{
655
- return value ;
650
+ return ddResult ;
656
651
}
657
652
658
- // need to return default/default value here depending on whether it's a struct
659
- return null ;
653
+ if ( defaultValue is null )
654
+ {
655
+ return null ;
656
+ }
657
+
658
+ RecordTelemetry ( Telemetry , Key , RecordValue , defaultValue ) ;
659
+ return defaultValue ;
660
660
}
661
661
}
662
662
@@ -669,42 +669,59 @@ internal readonly struct ClassConfigurationResultWithKey<T>(IConfigurationTeleme
669
669
public readonly ConfigurationResult < T > ConfigurationResult = configurationResult ;
670
670
671
671
public T WithDefault ( T defaultValue )
672
- => WithDefault ( getDefaultValue : ( ) => defaultValue ) ;
673
-
674
- public T WithDefault ( Func < DefaultResult < T > > getDefaultValue )
675
672
{
676
- if ( TryHandleResult ( Telemetry , Key , ConfigurationResult , RecordValue , getDefaultValue , out var value ) )
673
+ if ( ConfigurationResult is { Result : { } ddResult , IsValid : true } )
677
674
{
678
- return value ;
675
+ return ddResult ;
679
676
}
680
677
681
- return default ! ; // should never be invoked because we have a value for getDefaultValue
678
+ RecordTelemetry ( Telemetry , Key , RecordValue , defaultValue ) ;
679
+ return defaultValue ;
682
680
}
683
681
684
682
public T ? OverrideWith ( in ClassConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler )
685
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue : null ) ;
683
+ => CalculateOverrides ( in otelConfig , overrideHandler , defaultValue : null ) ;
686
684
687
685
public T OverrideWith ( in ClassConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , T defaultValue )
688
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue : ( ) => defaultValue ) ;
686
+ => CalculateOverrides ( in otelConfig , overrideHandler , defaultValue ) ;
689
687
690
688
public T OverrideWith ( in ClassConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , Func < DefaultResult < T > > getDefaultValue )
691
- => CalculateOverrides ( in otelConfig , overrideHandler , getDefaultValue ) ;
689
+ {
690
+ if ( overrideHandler . TryHandleOverrides ( Key , ConfigurationResult , otelConfig . Key , otelConfig . ConfigurationResult , out var overridden ) )
691
+ {
692
+ return overridden ;
693
+ }
692
694
693
- [ return : NotNullIfNotNull ( nameof ( getDefaultValue ) ) ]
694
- private T ? CalculateOverrides ( in ClassConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , Func < DefaultResult < T > > ? getDefaultValue )
695
+ if ( ConfigurationResult is { Result : { } ddResult , IsValid : true } )
696
+ {
697
+ return ddResult ;
698
+ }
699
+
700
+ var defaultValue = getDefaultValue ( ) ;
701
+ RecordTelemetry ( Telemetry , Key , RecordValue , defaultValue ) ;
702
+ return defaultValue . Result ;
703
+ }
704
+
705
+ [ return : NotNullIfNotNull ( nameof ( defaultValue ) ) ]
706
+ private T ? CalculateOverrides ( in ClassConfigurationResultWithKey < T > otelConfig , IConfigurationOverrideHandler overrideHandler , T ? defaultValue )
695
707
{
696
708
if ( overrideHandler . TryHandleOverrides ( Key , ConfigurationResult , otelConfig . Key , otelConfig . ConfigurationResult , out var overridden ) )
697
709
{
698
710
return overridden ;
699
711
}
700
712
701
- if ( TryHandleResult ( Telemetry , Key , ConfigurationResult , RecordValue , getDefaultValue , out var value ) )
713
+ if ( ConfigurationResult is { Result : { } ddResult , IsValid : true } )
702
714
{
703
- return value ;
715
+ return ddResult ;
704
716
}
705
717
706
- // need to return default/default value here depending on whether it's a struct
707
- return null ;
718
+ if ( defaultValue is null )
719
+ {
720
+ return null ;
721
+ }
722
+
723
+ RecordTelemetry ( Telemetry , Key , RecordValue , defaultValue ) ;
724
+ return defaultValue ;
708
725
}
709
726
}
710
727
0 commit comments