From a0e57f5ff68a9f0b60fe2257205a1d4062fd1961 Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Sat, 5 Jul 2025 22:22:11 -0400 Subject: [PATCH] Seal NullLogger Sealing it makes type checks against it cheaper. Some libraries special-case ILogger instances that are NullLogger in order to avoid some logging-related overheads. While normally sealing a previously shipped public type would be a breaking change, NullLogger's only constructor is private, so types can't currently derive from it. --- .../ref/Microsoft.Extensions.Logging.Abstractions.cs | 2 +- .../Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs index 4e973443ef8257..cd1125477953f3 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/ref/Microsoft.Extensions.Logging.Abstractions.cs @@ -177,7 +177,7 @@ public readonly partial struct LogEntry public Microsoft.Extensions.Logging.LogLevel LogLevel { get { throw null; } } public TState State { get { throw null; } } } - public partial class NullLogger : Microsoft.Extensions.Logging.ILogger + public sealed partial class NullLogger : Microsoft.Extensions.Logging.ILogger { internal NullLogger() { } public static Microsoft.Extensions.Logging.Abstractions.NullLogger Instance { get { throw null; } } diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs index e2b1cd8b264eb8..d77a41315a0ec7 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/NullLogger.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Logging.Abstractions /// /// Minimalistic logger that does nothing. /// - public class NullLogger : ILogger + public sealed class NullLogger : ILogger { /// /// Returns the shared instance of .