From 7af529892b7d444e650c7fdeabcc81d0ced8aa5c Mon Sep 17 00:00:00 2001 From: Nathanael Marchand Date: Thu, 31 Oct 2024 16:03:03 +0100 Subject: [PATCH 1/2] chore: make ActivityBaggageLogScopeWrapper implements IEnumerable> --- .../Logging/Import/LoggerFactoryScopeProvider.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs index 3e18106972d..d04cb69f774 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs @@ -236,7 +236,7 @@ IEnumerator IEnumerable.GetEnumerator() } } - private sealed class ActivityBaggageLogScopeWrapper : IEnumerable> + private sealed class ActivityBaggageLogScopeWrapper : IEnumerable>, IEnumerable> { private readonly IEnumerable> _items; @@ -252,6 +252,11 @@ public ActivityBaggageLogScopeWrapper(IEnumerable> return _items.GetEnumerator(); } + IEnumerator> IEnumerable>.GetEnumerator() + { + return _items.Select(x => KeyValuePair.Create(x.Key, x.Value)).GetEnumerator(); + } + IEnumerator IEnumerable.GetEnumerator() { return _items.GetEnumerator(); From a7ecab25ea0f88f1096d580d30123d0c5675d571 Mon Sep 17 00:00:00 2001 From: Nathanael Marchand Date: Fri, 1 Nov 2024 15:14:15 +0100 Subject: [PATCH 2/2] chore: fix ActivityBaggageLogScopeWrapper implementation --- .../Import/LoggerFactoryScopeProvider.cs | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs index d04cb69f774..7b13b12c7df 100644 --- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs +++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/Import/LoggerFactoryScopeProvider.cs @@ -236,7 +236,7 @@ IEnumerator IEnumerable.GetEnumerator() } } - private sealed class ActivityBaggageLogScopeWrapper : IEnumerable>, IEnumerable> + private sealed class ActivityBaggageLogScopeWrapper : IEnumerable> { private readonly IEnumerable> _items; @@ -247,20 +247,10 @@ public ActivityBaggageLogScopeWrapper(IEnumerable> _items = items; } - public IEnumerator> GetEnumerator() - { - return _items.GetEnumerator(); - } - - IEnumerator> IEnumerable>.GetEnumerator() - { - return _items.Select(x => KeyValuePair.Create(x.Key, x.Value)).GetEnumerator(); - } + public IEnumerator> GetEnumerator() => + new BaggageEnumerator(_items.GetEnumerator()); - IEnumerator IEnumerable.GetEnumerator() - { - return _items.GetEnumerator(); - } + IEnumerator IEnumerable.GetEnumerator() => new BaggageEnumerator(_items.GetEnumerator()); public override string ToString() { @@ -290,6 +280,27 @@ public override string ToString() return result; } } + + private readonly struct BaggageEnumerator : IEnumerator> + { + private readonly IEnumerator> _enumerator; + + public BaggageEnumerator(IEnumerator> enumerator) + { + _enumerator = enumerator; + } + + public KeyValuePair Current => + new KeyValuePair(_enumerator.Current.Key, _enumerator.Current.Value); + + object? IEnumerator.Current => Current; + + public void Dispose() => _enumerator.Dispose(); + + public bool MoveNext() => _enumerator.MoveNext(); + + public void Reset() => _enumerator.Reset(); + } } }