diff --git a/Directory.Build.props b/Directory.Build.props index 031340d..736814b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,5 +6,6 @@ $(MSBuildThisFileDirectory)assets/Serilog.snk enable false + enable diff --git a/sample/Sample/Program.cs b/sample/Sample/Program.cs index d2888aa..ae2422c 100644 --- a/sample/Sample/Program.cs +++ b/sample/Sample/Program.cs @@ -73,14 +73,14 @@ public bool IsEnabled(LogEvent logEvent) public class LoginData { - public string Username; + public string? Username; // ReSharper disable once NotAccessedField.Global - public string Password; + public string? Password; } public class CustomPolicy : IDestructuringPolicy { - public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, out LogEventPropertyValue result) + public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, out LogEventPropertyValue? result) { result = null; diff --git a/src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs b/src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs index b4ce091..2282b1b 100644 --- a/src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs +++ b/src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs @@ -47,7 +47,7 @@ public static class ConfigurationLoggerConfigurationExtensions this LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, string sectionName, - DependencyContext dependencyContext = null) + DependencyContext? dependencyContext = null) { if (settingConfiguration == null) throw new ArgumentNullException(nameof(settingConfiguration)); if (configuration == null) throw new ArgumentNullException(nameof(configuration)); @@ -87,7 +87,7 @@ public static class ConfigurationLoggerConfigurationExtensions public static LoggerConfiguration ConfigurationSection( this LoggerSettingsConfiguration settingConfiguration, IConfigurationSection configSection, - DependencyContext dependencyContext = null) + DependencyContext? dependencyContext = null) { if (settingConfiguration == null) throw new ArgumentNullException(nameof(settingConfiguration)); if (configSection == null) throw new ArgumentNullException(nameof(configSection)); @@ -214,7 +214,7 @@ public static class ConfigurationLoggerConfigurationExtensions public static LoggerConfiguration Configuration( this LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, - ConfigurationReaderOptions readerOptions = null) + ConfigurationReaderOptions? readerOptions = null) { var configurationReader = readerOptions switch { @@ -225,7 +225,7 @@ public static class ConfigurationLoggerConfigurationExtensions return settingConfiguration.Settings(configurationReader); } - static ConfigurationReader GetConfigurationReader(IConfiguration configuration, ConfigurationReaderOptions readerOptions, DependencyContext dependencyContext) + static ConfigurationReader GetConfigurationReader(IConfiguration configuration, ConfigurationReaderOptions readerOptions, DependencyContext? dependencyContext) { var assemblyFinder = dependencyContext == null ? AssemblyFinder.Auto() : AssemblyFinder.ForDependencyContext(dependencyContext); var section = string.IsNullOrWhiteSpace(readerOptions.SectionName) ? configuration : configuration.GetSection(readerOptions.SectionName); diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/Assemblies/DllScanningAssemblyFinder.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/Assemblies/DllScanningAssemblyFinder.cs index 4d7570c..e571157 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/Assemblies/DllScanningAssemblyFinder.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/Assemblies/DllScanningAssemblyFinder.cs @@ -46,7 +46,7 @@ where IsCaseInsensitiveMatch(assemblyFileName, nameToFind) return query.ToList().AsReadOnly(); - static AssemblyName TryGetAssemblyNameFrom(string path) + static AssemblyName? TryGetAssemblyNameFrom(string path) { try { diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs index 8d16635..b9f5ddc 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReader.cs @@ -20,9 +20,9 @@ class ConfigurationReader : IConfigurationReader readonly IConfiguration _section; readonly IReadOnlyCollection _configurationAssemblies; readonly ResolutionContext _resolutionContext; - readonly IConfigurationRoot _configurationRoot; + readonly IConfigurationRoot? _configurationRoot; - public ConfigurationReader(IConfiguration configSection, AssemblyFinder assemblyFinder, ConfigurationReaderOptions readerOptions, IConfiguration configuration = null) + public ConfigurationReader(IConfiguration configSection, AssemblyFinder assemblyFinder, ConfigurationReaderOptions readerOptions, IConfiguration? configuration = null) { _section = configSection ?? throw new ArgumentNullException(nameof(configSection)); _configurationAssemblies = LoadConfigurationAssemblies(_section, assemblyFinder); @@ -145,8 +145,8 @@ void ApplyMinimumLevel(LoggerConfiguration loggerConfiguration) { var minimumLevelDirective = _section.GetSection("MinimumLevel"); - IConfigurationSection defaultMinLevelDirective = GetDefaultMinLevelDirective(); - if (defaultMinLevelDirective.Value != null) + IConfigurationSection? defaultMinLevelDirective = GetDefaultMinLevelDirective(); + if (defaultMinLevelDirective?.Value != null) { ApplyMinimumLevelConfiguration(defaultMinLevelDirective, (configuration, levelSwitch) => configuration.ControlledBy(levelSwitch)); } @@ -189,7 +189,7 @@ void ApplyMinimumLevelConfiguration(IConfigurationSection directive, Action candidateMethods, string name, IReadOnlyCollection suppliedArgumentNames) + internal static MethodInfo? SelectConfigurationMethod(IReadOnlyCollection candidateMethods, string name, IReadOnlyCollection suppliedArgumentNames) { // Per issue #111, it is safe to use case-insensitive matching on argument names. The CLR doesn't permit this type // of overloading, and the Microsoft.Extensions.Configuration keys are case-insensitive (case is preserved with some diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReaderOptions.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReaderOptions.cs index 7fa22a5..3956cf0 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReaderOptions.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/ConfigurationReaderOptions.cs @@ -38,7 +38,7 @@ public ConfigurationReaderOptions() : this(dependencyContext: null) /// The dependency context from which sink/enricher packages can be located. If , the platform default will be used. /// /// Prefer the constructor taking explicit assemblies: . It's the only one supporting single-file publishing. - public ConfigurationReaderOptions(DependencyContext dependencyContext) => DependencyContext = dependencyContext; + public ConfigurationReaderOptions(DependencyContext? dependencyContext) => DependencyContext = dependencyContext; /// /// Initialize a new instance of the class. @@ -50,12 +50,12 @@ public ConfigurationReaderOptions() : this(dependencyContext: null) /// /// The section name for section which contains a Serilog section. Defaults to Serilog. /// - public string SectionName { get; init; } = ConfigurationLoggerConfigurationExtensions.DefaultSectionName; + public string? SectionName { get; init; } = ConfigurationLoggerConfigurationExtensions.DefaultSectionName; /// /// The used when converting strings to other object types. Defaults to the invariant culture. /// - public IFormatProvider FormatProvider { get; init; } = CultureInfo.InvariantCulture; + public IFormatProvider? FormatProvider { get; init; } = CultureInfo.InvariantCulture; /// /// Called when a log level switch is created while reading the configuration. @@ -65,9 +65,9 @@ public ConfigurationReaderOptions() : this(dependencyContext: null) /// For minimum level override switches, the switch name is the (partial) namespace or type name of the override. /// /// - public Action OnLevelSwitchCreated { get; init; } + public Action? OnLevelSwitchCreated { get; init; } - internal Assembly[] Assemblies { get; } - internal DependencyContext DependencyContext { get; } + internal Assembly[]? Assemblies { get; } + internal DependencyContext? DependencyContext { get; } internal ConfigurationAssemblySource? ConfigurationAssemblySource { get; } } diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/IConfigurationArgumentValue.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/IConfigurationArgumentValue.cs index d39015c..8a1e86f 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/IConfigurationArgumentValue.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/IConfigurationArgumentValue.cs @@ -2,5 +2,5 @@ interface IConfigurationArgumentValue { - object ConvertTo(Type toType, ResolutionContext resolutionContext); + object? ConvertTo(Type toType, ResolutionContext resolutionContext); } diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/LoggingFilterSwitchProxy.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/LoggingFilterSwitchProxy.cs index a35d6b1..a35974e 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/LoggingFilterSwitchProxy.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/LoggingFilterSwitchProxy.cs @@ -2,8 +2,8 @@ class LoggingFilterSwitchProxy { - readonly Action _setProxy; - readonly Func _getProxy; + readonly Action _setProxy; + readonly Func _getProxy; LoggingFilterSwitchProxy(object realSwitch) { @@ -12,26 +12,26 @@ class LoggingFilterSwitchProxy var type = realSwitch.GetType(); var expressionProperty = type.GetProperty("Expression") ?? throw new MissingMemberException(type.FullName, "Expression"); - _setProxy = (Action)Delegate.CreateDelegate( - typeof(Action), + _setProxy = (Action)Delegate.CreateDelegate( + typeof(Action), realSwitch, expressionProperty.GetSetMethod()); - _getProxy = (Func)Delegate.CreateDelegate( - typeof(Func), + _getProxy = (Func)Delegate.CreateDelegate( + typeof(Func), realSwitch, expressionProperty.GetGetMethod()); } public object RealSwitch { get; } - public string Expression + public string? Expression { get => _getProxy(); set => _setProxy(value); } - public static LoggingFilterSwitchProxy Create(string expression = null) + public static LoggingFilterSwitchProxy? Create(string? expression = null) { var filterSwitchType = Type.GetType("Serilog.Expressions.LoggingFilterSwitch, Serilog.Expressions") ?? diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/ObjectArgumentValue.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/ObjectArgumentValue.cs index 87d8ace..6cc07b4 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/ObjectArgumentValue.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/ObjectArgumentValue.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; using System.Reflection; @@ -20,7 +21,7 @@ public ObjectArgumentValue(IConfigurationSection section, IReadOnlyCollection new { success = true, hasMatch = true, value = (object)argValue }, + true => new { success = true, hasMatch = true, value = (object?)argValue }, false => p.HasDefaultValue switch { - true => new { success = true, hasMatch = false, value = p.DefaultValue }, - false => new { success = false, hasMatch = false, value = (object)null }, + true => new { success = true, hasMatch = false, value = (object?)p.DefaultValue }, + false => new { success = false, hasMatch = false, value = (object?)null }, }, } group new { argumentBindResult, p.ParameterType } by c into gr @@ -178,7 +179,7 @@ select new ctorExpression = Expression.New(ctor.ConstructorInfo, ctorArguments); return true; - static bool TryBindToCtorArgument(object value, Type type, ResolutionContext resolutionContext, out Expression argumentExpression) + static bool TryBindToCtorArgument(object value, Type type, ResolutionContext resolutionContext, [NotNullWhen(true)] out Expression? argumentExpression) { argumentExpression = null; @@ -217,7 +218,7 @@ static bool TryBindToCtorArgument(object value, Type type, ResolutionContext res } } - static bool IsContainer(Type type, out Type elementType) + static bool IsContainer(Type type, [NotNullWhen(true)] out Type? elementType) { elementType = null; foreach (var iface in type.GetInterfaces()) diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/ResolutionContext.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/ResolutionContext.cs index d0fdf40..d002620 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/ResolutionContext.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/ResolutionContext.cs @@ -11,9 +11,9 @@ sealed class ResolutionContext { readonly IDictionary _declaredLevelSwitches; readonly IDictionary _declaredFilterSwitches; - readonly IConfiguration _appConfiguration; + readonly IConfiguration? _appConfiguration; - public ResolutionContext(IConfiguration appConfiguration = null, ConfigurationReaderOptions readerOptions = null) + public ResolutionContext(IConfiguration? appConfiguration = null, ConfigurationReaderOptions? readerOptions = null) { _declaredLevelSwitches = new Dictionary(); _declaredFilterSwitches = new Dictionary(); @@ -51,18 +51,7 @@ public LoggingFilterSwitchProxy LookUpFilterSwitchByName(string switchName) public bool HasAppConfiguration => _appConfiguration != null; - public IConfiguration AppConfiguration - { - get - { - if (!HasAppConfiguration) - { - throw new InvalidOperationException("AppConfiguration is not available"); - } - - return _appConfiguration; - } - } + public IConfiguration AppConfiguration => _appConfiguration ?? throw new InvalidOperationException("AppConfiguration is not available"); public string AddLevelSwitch(string levelSwitchName, LoggingLevelSwitch levelSwitch) { diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/StringArgumentValue.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/StringArgumentValue.cs index ab437eb..2c87b27 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/StringArgumentValue.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/StringArgumentValue.cs @@ -1,4 +1,5 @@ -using System.Reflection; +using System.Diagnostics.CodeAnalysis; +using System.Reflection; using System.Text.RegularExpressions; using Serilog.Core; @@ -23,7 +24,7 @@ public StringArgumentValue(string providedValue) { typeof(Type), s => Type.GetType(s, throwOnError:true) }, }; - public object ConvertTo(Type toType, ResolutionContext resolutionContext) + public object? ConvertTo(Type toType, ResolutionContext resolutionContext) { var argumentValue = Environment.ExpandEnvironmentVariables(_providedValue); @@ -158,7 +159,7 @@ public object ConvertTo(Type toType, ResolutionContext resolutionContext) return Convert.ChangeType(argumentValue, toType, resolutionContext.ReaderOptions.FormatProvider); } - internal static Type FindType(string typeName) + internal static Type? FindType(string typeName) { var type = Type.GetType(typeName); if (type == null) @@ -172,7 +173,7 @@ internal static Type FindType(string typeName) return type; } - internal static bool TryParseStaticMemberAccessor(string input, out string accessorTypeName, out string memberName) + internal static bool TryParseStaticMemberAccessor(string input, [NotNullWhen(true)] out string? accessorTypeName, [NotNullWhen(true)] out string? memberName) { if (input == null) { diff --git a/src/Serilog.Settings.Configuration/Settings/Configuration/SurrogateConfigurationMethods.cs b/src/Serilog.Settings.Configuration/Settings/Configuration/SurrogateConfigurationMethods.cs index cbc2869..b758d7c 100644 --- a/src/Serilog.Settings.Configuration/Settings/Configuration/SurrogateConfigurationMethods.cs +++ b/src/Serilog.Settings.Configuration/Settings/Configuration/SurrogateConfigurationMethods.cs @@ -45,14 +45,14 @@ static class SurrogateConfigurationMethods LoggerSinkConfiguration loggerSinkConfiguration, ILogEventSink sink, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null) + LoggingLevelSwitch? levelSwitch = null) => loggerSinkConfiguration.Sink(sink, restrictedToMinimumLevel, levelSwitch); static LoggerConfiguration Logger( LoggerSinkConfiguration loggerSinkConfiguration, Action configureLogger, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null) + LoggingLevelSwitch? levelSwitch = null) => loggerSinkConfiguration.Logger(configureLogger, restrictedToMinimumLevel, levelSwitch); // .AuditTo... @@ -61,14 +61,14 @@ static class SurrogateConfigurationMethods LoggerAuditSinkConfiguration auditSinkConfiguration, ILogEventSink sink, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null) + LoggingLevelSwitch? levelSwitch = null) => auditSinkConfiguration.Sink(sink, restrictedToMinimumLevel, levelSwitch); static LoggerConfiguration Logger( LoggerAuditSinkConfiguration auditSinkConfiguration, Action configureLogger, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null) + LoggingLevelSwitch? levelSwitch = null) => auditSinkConfiguration.Logger(configureLogger, restrictedToMinimumLevel, levelSwitch); // .Filter... @@ -109,7 +109,7 @@ static LoggerConfiguration AsScalar(LoggerDestructuringConfiguration loggerDestr LoggerEnrichmentConfiguration loggerEnrichmentConfiguration, Action configureEnricher, LogEventLevel enrichFromLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null) + LoggingLevelSwitch? levelSwitch = null) => levelSwitch != null ? loggerEnrichmentConfiguration.AtLevel(levelSwitch, configureEnricher) : loggerEnrichmentConfiguration.AtLevel(enrichFromLevel, configureEnricher); diff --git a/test/Serilog.Settings.Configuration.Tests/ConfigurationReaderTests.cs b/test/Serilog.Settings.Configuration.Tests/ConfigurationReaderTests.cs index 87b7067..0f8ae95 100644 --- a/test/Serilog.Settings.Configuration.Tests/ConfigurationReaderTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/ConfigurationReaderTests.cs @@ -154,7 +154,7 @@ public void CallableMethodsAreSelected() var suppliedArgumentNames = new[] { "pathFormat" }; var selected = ConfigurationReader.SelectConfigurationMethod(options, "DummyRollingFile", suppliedArgumentNames); - Assert.Equal(typeof(string), selected.GetParameters()[1].ParameterType); + Assert.Equal(typeof(string), selected?.GetParameters()[1].ParameterType); } [Fact] @@ -166,7 +166,7 @@ public void MethodsAreSelectedBasedOnCountOfMatchedArguments() var suppliedArgumentNames = new[] { "pathFormat", "formatter" }; var selected = ConfigurationReader.SelectConfigurationMethod(options, "DummyRollingFile", suppliedArgumentNames); - Assert.Equal(typeof(ITextFormatter), selected.GetParameters()[1].ParameterType); + Assert.Equal(typeof(ITextFormatter), selected?.GetParameters()[1].ParameterType); } [Fact] @@ -178,7 +178,7 @@ public void MethodsAreSelectedBasedOnCountOfMatchedArgumentsAndThenStringType() var suppliedArgumentNames = new[] { "pathFormat", "formatter" }; var selected = ConfigurationReader.SelectConfigurationMethod(options, "DummyRollingFile", suppliedArgumentNames); - Assert.Equal(typeof(string), selected.GetParameters()[2].ParameterType); + Assert.Equal(typeof(string), selected?.GetParameters()[2].ParameterType); } public static IEnumerable FlatMinimumLevel => new List diff --git a/test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs b/test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs index 5b4414c..9e3f96f 100644 --- a/test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/ConfigurationSettingsTests.cs @@ -11,17 +11,17 @@ namespace Serilog.Settings.Configuration.Tests; public class ConfigurationSettingsTests { - static LoggerConfiguration ConfigFromJson(string jsonString, string secondJsonSource = null, ConfigurationReaderOptions options = null) + static LoggerConfiguration ConfigFromJson(string jsonString, string? secondJsonSource = null, ConfigurationReaderOptions? options = null) { return ConfigFromJson(jsonString, secondJsonSource, out _, options); } - static LoggerConfiguration ConfigFromJson(string jsonString, out IConfiguration configuration, ConfigurationReaderOptions options = null) + static LoggerConfiguration ConfigFromJson(string jsonString, out IConfiguration configuration, ConfigurationReaderOptions? options = null) { return ConfigFromJson(jsonString, null, out configuration, options); } - static LoggerConfiguration ConfigFromJson(string jsonString, string secondJsonSource, out IConfiguration configuration, ConfigurationReaderOptions options) + static LoggerConfiguration ConfigFromJson(string jsonString, string? secondJsonSource, out IConfiguration configuration, ConfigurationReaderOptions? options) { var builder = new ConfigurationBuilder().AddJsonString(jsonString); if (secondJsonSource != null) @@ -34,7 +34,7 @@ static LoggerConfiguration ConfigFromJson(string jsonString, string secondJsonSo [Fact] public void PropertyEnrichmentIsApplied() { - LogEvent evt = null; + LogEvent? evt = null; var json = """ { @@ -61,7 +61,7 @@ public void PropertyEnrichmentIsApplied() [InlineData("")] public void CanReadWithoutSerilogSection(string sectionName) { - LogEvent evt = null; + LogEvent? evt = null; var json = """ { @@ -246,7 +246,7 @@ public void TestMinimumLevelOverrides() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -282,7 +282,7 @@ public void TestMinimumLevelOverridesForChildContext() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -406,7 +406,7 @@ public void LoggingFilterSwitchIsConfigured(string switchName) } } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -434,7 +434,7 @@ public void LoggingLevelSwitchIsConfigured(string switchName) } } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -489,7 +489,7 @@ public void LoggingLevelSwitchIsPassedToSinks() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -557,7 +557,7 @@ public void LoggingLevelSwitchCanBeUsedForMinimumLevelOverrides() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) @@ -579,6 +579,7 @@ public void LoggingLevelSwitchCanBeUsedForMinimumLevelOverrides() evt = null; var controlSwitch = DummyWithLevelSwitchSink.ControlLevelSwitch; + Assert.NotNull(controlSwitch); controlSwitch.MinimumLevel = LogEventLevel.Information; systemLogger.Write(Some.InformationEvent()); @@ -802,9 +803,9 @@ public void DestructureWithCollectionsOfTypeArgument() Assert.NotNull(DummyPolicy.Current); Assert.Equal(typeof(TimeSpan), DummyPolicy.Current.Type); Assert.Equal(new[] { typeof(int), typeof(string) }, DummyPolicy.Current.Array); - Assert.Equal(new[] { typeof(byte), typeof(short) }, DummyPolicy.Current.List); - Assert.Equal(typeof(long), DummyPolicy.Current.Custom.First); - Assert.Equal("System.UInt32", DummyPolicy.Current.CustomStrings.First); + Assert.Equal(new[] { typeof(byte), typeof(short) }, DummyPolicy.Current.List!); + Assert.Equal(typeof(long), DummyPolicy.Current.Custom?.First); + Assert.Equal("System.UInt32", DummyPolicy.Current.CustomStrings?.First); } [Fact] @@ -1052,12 +1053,12 @@ public void DestructureLimitsCollectionCount() private static string GetDestructuredProperty(object x, string json) { - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); log.Information("{@X}", x); - var result = evt.Properties["X"].ToString(); + var result = evt!.Properties["X"].ToString(); return result; } @@ -1077,12 +1078,12 @@ public void DestructuringWithCustomExtensionMethodIsApplied() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); log.Information("Destructuring with hard-coded policy {@Input}", new { Foo = "Bar" }); - var formattedProperty = evt.Properties["Input"].ToString(); + var formattedProperty = evt?.Properties["Input"].ToString(); Assert.Equal("\"hardcoded\"", formattedProperty); } @@ -1102,13 +1103,13 @@ public void DestructuringAsScalarIsAppliedWithShortTypeName() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); log.Information("Destructuring as scalar {@Scalarized}", new Version(2, 3)); - var prop = evt.Properties["Scalarized"]; + var prop = evt?.Properties["Scalarized"]; Assert.IsType(prop); } @@ -1128,13 +1129,13 @@ public void DestructuringAsScalarIsAppliedWithAssemblyQualifiedName() } """; - LogEvent evt = null; + LogEvent? evt = null; var log = ConfigFromJson(json) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); log.Information("Destructuring as scalar {@Scalarized}", new Version(2, 3)); - var prop = evt.Properties["Scalarized"]; + var prop = evt?.Properties["Scalarized"]; Assert.IsType(prop); } @@ -1314,7 +1315,7 @@ public void AuditToSinkIsAppliedWithCustomSinkAndLevelSwitch() [Fact] public void EnrichWithIsAppliedWithCustomEnricher() { - LogEvent evt = null; + LogEvent? evt = null; var json = $$""" { @@ -1344,7 +1345,7 @@ public void EnrichWithIsAppliedWithCustomEnricher() [Fact] public void FilterWithIsAppliedWithCustomFilter() { - LogEvent evt = null; + LogEvent? evt = null; var json = $$""" { diff --git a/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationExtensions.cs b/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationExtensions.cs index 774c8cb..c8a00d6 100644 --- a/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationExtensions.cs +++ b/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationExtensions.cs @@ -6,17 +6,17 @@ namespace Serilog.Settings.Configuration.Tests; static class DummyLoggerConfigurationExtensions { - public static LoggerConfiguration DummyRollingFile( + public static LoggerConfiguration? DummyRollingFile( LoggerSinkConfiguration loggerSinkConfiguration, string pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - string outputTemplate = null, - IFormatProvider formatProvider = null) + string? outputTemplate = null, + IFormatProvider? formatProvider = null) { return null; } - public static LoggerConfiguration DummyRollingFile( + public static LoggerConfiguration? DummyRollingFile( LoggerSinkConfiguration loggerSinkConfiguration, ITextFormatter formatter, string pathFormat, diff --git a/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationWithMultipleMethodsExtensions.cs b/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationWithMultipleMethodsExtensions.cs index 5bc743f..1ad5c22 100644 --- a/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationWithMultipleMethodsExtensions.cs +++ b/test/Serilog.Settings.Configuration.Tests/DummyLoggerConfigurationWithMultipleMethodsExtensions.cs @@ -8,29 +8,29 @@ namespace Serilog.Settings.Configuration.Tests; static class DummyLoggerConfigurationWithMultipleMethodsExtensions { - public static LoggerConfiguration DummyRollingFile( + public static LoggerConfiguration? DummyRollingFile( LoggerSinkConfiguration loggerSinkConfiguration, ITextFormatter formatter, IEnumerable pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - string outputTemplate = null, - IFormatProvider formatProvider = null) + string? outputTemplate = null, + IFormatProvider? formatProvider = null) { return null; } - public static LoggerConfiguration DummyRollingFile( + public static LoggerConfiguration? DummyRollingFile( LoggerSinkConfiguration loggerSinkConfiguration, ITextFormatter formatter, string pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - string outputTemplate = null, - IFormatProvider formatProvider = null) + string? outputTemplate = null, + IFormatProvider? formatProvider = null) { return null; } - public static LoggerConfiguration DummyRollingFile( + public static LoggerConfiguration? DummyRollingFile( LoggerSinkConfiguration loggerSinkConfiguration, string pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) diff --git a/test/Serilog.Settings.Configuration.Tests/DynamicLevelChangeTests.cs b/test/Serilog.Settings.Configuration.Tests/DynamicLevelChangeTests.cs index f3c0b90..cbe9ab7 100644 --- a/test/Serilog.Settings.Configuration.Tests/DynamicLevelChangeTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/DynamicLevelChangeTests.cs @@ -85,7 +85,7 @@ public void ShouldRespectDynamicLevelChanges() Assert.Empty(DummyConsoleSink.Emitted); } - void UpdateConfig(LogEventLevel? minimumLevel = null, LogEventLevel? switchLevel = null, LogEventLevel? overrideLevel = null, string filterExpression = null) + void UpdateConfig(LogEventLevel? minimumLevel = null, LogEventLevel? switchLevel = null, LogEventLevel? overrideLevel = null, string? filterExpression = null) { if (minimumLevel.HasValue) { diff --git a/test/Serilog.Settings.Configuration.Tests/LoggerConfigurationExtensionsTests.cs b/test/Serilog.Settings.Configuration.Tests/LoggerConfigurationExtensionsTests.cs index c7ef68c..e73ae14 100644 --- a/test/Serilog.Settings.Configuration.Tests/LoggerConfigurationExtensionsTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/LoggerConfigurationExtensionsTests.cs @@ -19,7 +19,7 @@ public void ReadFromConfigurationShouldNotThrowOnEmptyConfiguration() [Trait("BugFix", "https://github.com/serilog/serilog-settings-configuration/issues/143")] public void ReadFromConfigurationSectionReadsFromAnArbitrarySection() { - LogEvent evt = null; + LogEvent? evt = null; var json = """ { @@ -45,7 +45,7 @@ public void ReadFromConfigurationSectionReadsFromAnArbitrarySection() log.Information("Has a test property"); Assert.NotNull(evt); - Assert.Equal("Test", evt.Properties["App"].LiteralValue()); + Assert.Equal("Test", evt?.Properties["App"].LiteralValue()); } [Fact] diff --git a/test/Serilog.Settings.Configuration.Tests/ObjectArgumentValueTests.cs b/test/Serilog.Settings.Configuration.Tests/ObjectArgumentValueTests.cs index ee775e4..cfba77e 100644 --- a/test/Serilog.Settings.Configuration.Tests/ObjectArgumentValueTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/ObjectArgumentValueTests.cs @@ -29,7 +29,7 @@ public void ShouldBindToConstructorArguments(string caseSection, Type targetType var testSection = _config.GetSection(caseSection); Assert.True(ObjectArgumentValue.TryBuildCtorExpression(testSection, targetType, new(), out var ctorExpression)); - Assert.Equal(expectedExpression, ctorExpression.ToString()); + Assert.Equal(expectedExpression, ctorExpression?.ToString()); } class A diff --git a/test/Serilog.Settings.Configuration.Tests/Serilog.Settings.Configuration.approved.txt b/test/Serilog.Settings.Configuration.Tests/Serilog.Settings.Configuration.approved.txt index 912f171..63d982c 100644 --- a/test/Serilog.Settings.Configuration.Tests/Serilog.Settings.Configuration.approved.txt +++ b/test/Serilog.Settings.Configuration.Tests/Serilog.Settings.Configuration.approved.txt @@ -9,13 +9,13 @@ namespace Serilog [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, ConfigurationReaderOptio" + "ns readerOptions) instead.")] public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, Serilog.Settings.Configuration.ConfigurationAssemblySource configurationAssemblySource) { } - public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, Serilog.Settings.Configuration.ConfigurationReaderOptions readerOptions = null) { } + public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, Serilog.Settings.Configuration.ConfigurationReaderOptions? readerOptions = null) { } [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, ConfigurationReaderOptio" + "ns readerOptions) instead.")] public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, params System.Reflection.Assembly[] assemblies) { } [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, ConfigurationReaderOptio" + "ns readerOptions) instead.")] - public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, string sectionName, Microsoft.Extensions.DependencyModel.DependencyContext dependencyContext = null) { } + public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, string sectionName, Microsoft.Extensions.DependencyModel.DependencyContext? dependencyContext = null) { } [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, ConfigurationReaderOptio" + "ns readerOptions) instead.")] public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, string sectionName, Serilog.Settings.Configuration.ConfigurationAssemblySource configurationAssemblySource) { } @@ -24,7 +24,7 @@ namespace Serilog public static Serilog.LoggerConfiguration Configuration(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfiguration configuration, string sectionName, params System.Reflection.Assembly[] assemblies) { } [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, string sectionName, Depe" + "ndencyContext dependencyContext) instead.")] - public static Serilog.LoggerConfiguration ConfigurationSection(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfigurationSection configSection, Microsoft.Extensions.DependencyModel.DependencyContext dependencyContext = null) { } + public static Serilog.LoggerConfiguration ConfigurationSection(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfigurationSection configSection, Microsoft.Extensions.DependencyModel.DependencyContext? dependencyContext = null) { } [System.Obsolete("Use ReadFrom.Configuration(IConfiguration configuration, string sectionName, Conf" + "igurationAssemblySource configurationAssemblySource) instead.")] public static Serilog.LoggerConfiguration ConfigurationSection(this Serilog.Configuration.LoggerSettingsConfiguration settingConfiguration, Microsoft.Extensions.Configuration.IConfigurationSection configSection, Serilog.Settings.Configuration.ConfigurationAssemblySource configurationAssemblySource) { } @@ -40,11 +40,11 @@ namespace Serilog.Settings.Configuration public sealed class ConfigurationReaderOptions { public ConfigurationReaderOptions() { } - public ConfigurationReaderOptions(Microsoft.Extensions.DependencyModel.DependencyContext dependencyContext) { } + public ConfigurationReaderOptions(Microsoft.Extensions.DependencyModel.DependencyContext? dependencyContext) { } public ConfigurationReaderOptions(Serilog.Settings.Configuration.ConfigurationAssemblySource configurationAssemblySource) { } public ConfigurationReaderOptions(params System.Reflection.Assembly[] assemblies) { } - public System.IFormatProvider FormatProvider { get; init; } - public System.Action OnLevelSwitchCreated { get; init; } - public string SectionName { get; init; } + public System.IFormatProvider? FormatProvider { get; init; } + public System.Action? OnLevelSwitchCreated { get; init; } + public string? SectionName { get; init; } } } \ No newline at end of file diff --git a/test/Serilog.Settings.Configuration.Tests/StringArgumentValueTests.cs b/test/Serilog.Settings.Configuration.Tests/StringArgumentValueTests.cs index 08599f1..535449f 100644 --- a/test/Serilog.Settings.Configuration.Tests/StringArgumentValueTests.cs +++ b/test/Serilog.Settings.Configuration.Tests/StringArgumentValueTests.cs @@ -110,8 +110,8 @@ public void StaticMembersAccessorsCanBeUsedForDelegateTypes(string input, Type t var actual = stringArgumentValue.ConvertTo(targetType, new ResolutionContext()); Assert.IsAssignableFrom(targetType, actual); - var parser = (Delegate)actual; - Assert.Equal(100, parser.DynamicInvoke("100")); + var parser = (Delegate?)actual; + Assert.Equal(100, parser?.DynamicInvoke("100")); } [Theory] @@ -216,7 +216,7 @@ public void StringValuesConvertToTypeFromShortTypeName() var shortTypeName = "System.Version"; var stringArgumentValue = new StringArgumentValue(shortTypeName); - var actual = (Type)stringArgumentValue.ConvertTo(typeof(Type), new ResolutionContext()); + var actual = (Type?)stringArgumentValue.ConvertTo(typeof(Type), new ResolutionContext()); Assert.Equal(typeof(Version), actual); } @@ -224,10 +224,10 @@ public void StringValuesConvertToTypeFromShortTypeName() [Fact] public void StringValuesConvertToTypeFromAssemblyQualifiedName() { - var assemblyQualifiedName = typeof(Version).AssemblyQualifiedName; + var assemblyQualifiedName = typeof(Version).AssemblyQualifiedName!; var stringArgumentValue = new StringArgumentValue(assemblyQualifiedName); - var actual = (Type)stringArgumentValue.ConvertTo(typeof(Type), new ResolutionContext()); + var actual = (Type?)stringArgumentValue.ConvertTo(typeof(Type), new ResolutionContext()); Assert.Equal(typeof(Version), actual); } diff --git a/test/Serilog.Settings.Configuration.Tests/Support/ConfigurationReaderTestHelpers.cs b/test/Serilog.Settings.Configuration.Tests/Support/ConfigurationReaderTestHelpers.cs index 3a8c18f..3319227 100644 --- a/test/Serilog.Settings.Configuration.Tests/Support/ConfigurationReaderTestHelpers.cs +++ b/test/Serilog.Settings.Configuration.Tests/Support/ConfigurationReaderTestHelpers.cs @@ -47,9 +47,9 @@ public static void AssertLogEventLevels(LoggerConfiguration loggerConfig, LogEve // the naming is only to show priority as providers public static IConfigurationRoot GetConfigRoot( - string appsettingsJsonLevel = null, - string appsettingsDevelopmentJsonLevel = null, - Dictionary envVariables = null) + string? appsettingsJsonLevel = null, + string? appsettingsDevelopmentJsonLevel = null, + Dictionary? envVariables = null) { var configBuilder = new ConfigurationBuilder(); diff --git a/test/Serilog.Settings.Configuration.Tests/Support/DelegatingSink.cs b/test/Serilog.Settings.Configuration.Tests/Support/DelegatingSink.cs index 60096c0..0c1bf81 100644 --- a/test/Serilog.Settings.Configuration.Tests/Support/DelegatingSink.cs +++ b/test/Serilog.Settings.Configuration.Tests/Support/DelegatingSink.cs @@ -17,9 +17,9 @@ public void Emit(LogEvent logEvent) _write(logEvent); } - public static LogEvent GetLogEvent(Action writeAction) + public static LogEvent? GetLogEvent(Action writeAction) { - LogEvent result = null; + LogEvent? result = null; var l = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.Sink(new DelegatingSink(le => result = le)) diff --git a/test/Serilog.Settings.Configuration.Tests/Support/Some.cs b/test/Serilog.Settings.Configuration.Tests/Support/Some.cs index 226d749..ba4f6af 100644 --- a/test/Serilog.Settings.Configuration.Tests/Support/Some.cs +++ b/test/Serilog.Settings.Configuration.Tests/Support/Some.cs @@ -18,7 +18,7 @@ public static decimal Decimal() return Int() + 0.123m; } - public static string String(string tag = null) + public static string String(string? tag = null) { return (tag ?? "") + "__" + Int(); } diff --git a/test/TestDummies/Console/DummyConsoleSink.cs b/test/TestDummies/Console/DummyConsoleSink.cs index 67134e5..0486eae 100644 --- a/test/TestDummies/Console/DummyConsoleSink.cs +++ b/test/TestDummies/Console/DummyConsoleSink.cs @@ -6,18 +6,18 @@ namespace TestDummies.Console; public class DummyConsoleSink : ILogEventSink { - public DummyConsoleSink(ConsoleTheme theme = null) + public DummyConsoleSink(ConsoleTheme? theme = null) { Theme = theme ?? ConsoleTheme.None; } [ThreadStatic] - public static ConsoleTheme Theme; + public static ConsoleTheme? Theme; [ThreadStatic] - static List EmittedList; + static List? EmittedList; - public static List Emitted => EmittedList ?? (EmittedList = new List()); + public static List Emitted => EmittedList ??= new List(); public void Emit(LogEvent logEvent) { diff --git a/test/TestDummies/DummyConfigurationSink.cs b/test/TestDummies/DummyConfigurationSink.cs index c522f1b..51620ad 100644 --- a/test/TestDummies/DummyConfigurationSink.cs +++ b/test/TestDummies/DummyConfigurationSink.cs @@ -7,22 +7,22 @@ namespace TestDummies; public class DummyConfigurationSink : ILogEventSink { [ThreadStatic] - static List _emitted; + static List? _emitted; [ThreadStatic] - static IConfiguration _configuration; + static IConfiguration? _configuration; [ThreadStatic] - static IConfigurationSection _configSection; + static IConfigurationSection? _configSection; public static List Emitted => _emitted ?? (_emitted = new List()); - public static IConfiguration Configuration => _configuration; + public static IConfiguration? Configuration => _configuration; - public static IConfigurationSection ConfigSection => _configSection; + public static IConfigurationSection? ConfigSection => _configSection; - public DummyConfigurationSink(IConfiguration configuration, IConfigurationSection configSection) + public DummyConfigurationSink(IConfiguration? configuration, IConfigurationSection? configSection) { _configuration = configuration; _configSection = configSection; diff --git a/test/TestDummies/DummyLoggerConfigurationExtensions.cs b/test/TestDummies/DummyLoggerConfigurationExtensions.cs index 7dfccc0..886e317 100644 --- a/test/TestDummies/DummyLoggerConfigurationExtensions.cs +++ b/test/TestDummies/DummyLoggerConfigurationExtensions.cs @@ -20,8 +20,8 @@ public static LoggerConfiguration WithDummyThreadId(this LoggerEnrichmentConfigu this LoggerSinkConfiguration loggerSinkConfiguration, string pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - string outputTemplate = null, - IFormatProvider formatProvider = null) + string? outputTemplate = null, + IFormatProvider? formatProvider = null) { return loggerSinkConfiguration.Sink(new DummyRollingFileSink(), restrictedToMinimumLevel); } @@ -45,7 +45,7 @@ public static LoggerConfiguration WithDummyThreadId(this LoggerEnrichmentConfigu public static LoggerConfiguration DummyWithOptionalConfiguration( this LoggerSinkConfiguration loggerSinkConfiguration, - IConfiguration appConfiguration = null, + IConfiguration? appConfiguration = null, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum) { return loggerSinkConfiguration.Sink(new DummyConfigurationSink(appConfiguration, null), restrictedToMinimumLevel); @@ -70,9 +70,9 @@ public static LoggerConfiguration WithDummyThreadId(this LoggerEnrichmentConfigu public class Binding { - public string Foo { get; set; } + public string? Foo { get; set; } - public string Abc { get; set; } + public string? Abc { get; set; } } public static LoggerConfiguration DummyRollingFile( @@ -97,8 +97,8 @@ public class Binding this LoggerAuditSinkConfiguration loggerSinkConfiguration, string pathFormat, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - string outputTemplate = null, - IFormatProvider formatProvider = null) + string? outputTemplate = null, + IFormatProvider? formatProvider = null) { return loggerSinkConfiguration.Sink(new DummyRollingFileAuditSink(), restrictedToMinimumLevel); } @@ -106,7 +106,7 @@ public class Binding public static LoggerConfiguration DummyWithLevelSwitch( this LoggerSinkConfiguration loggerSinkConfiguration, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch controlLevelSwitch = null) + LoggingLevelSwitch? controlLevelSwitch = null) { return loggerSinkConfiguration.Sink(new DummyWithLevelSwitchSink(controlLevelSwitch), restrictedToMinimumLevel); } @@ -114,8 +114,8 @@ public class Binding public static LoggerConfiguration DummyConsole( this LoggerSinkConfiguration loggerSinkConfiguration, LogEventLevel restrictedToMinimumLevel = LevelAlias.Minimum, - LoggingLevelSwitch levelSwitch = null, - ConsoleTheme theme = null) + LoggingLevelSwitch? levelSwitch = null, + ConsoleTheme? theme = null) { return loggerSinkConfiguration.Sink(new DummyConsoleSink(theme), restrictedToMinimumLevel, levelSwitch); } @@ -142,10 +142,10 @@ string hardCodedString public static LoggerConfiguration DummyArrayOfType(this LoggerDestructuringConfiguration loggerSinkConfiguration, List list, - Type[] array = null, - Type type = null, - CustomCollection custom = null, - CustomCollection customString = null) + Type[]? array = null, + Type? type = null, + CustomCollection? custom = null, + CustomCollection? customString = null) { return loggerSinkConfiguration.With(DummyPolicy.Current = new DummyPolicy { diff --git a/test/TestDummies/DummyPolicy.cs b/test/TestDummies/DummyPolicy.cs index f289818..2104abf 100644 --- a/test/TestDummies/DummyPolicy.cs +++ b/test/TestDummies/DummyPolicy.cs @@ -6,17 +6,17 @@ namespace TestDummies; public class DummyPolicy : IDestructuringPolicy { - public static DummyPolicy Current { get; set; } + public static DummyPolicy? Current { get; set; } - public Type[] Array { get; set; } + public Type[]? Array { get; set; } - public List List { get; set; } + public List? List { get; set; } - public CustomCollection Custom { get; set; } + public CustomCollection? Custom { get; set; } - public CustomCollection CustomStrings { get; set; } + public CustomCollection? CustomStrings { get; set; } - public Type Type { get; set; } + public Type? Type { get; set; } public float Float { get; set; } @@ -24,7 +24,7 @@ public class DummyPolicy : IDestructuringPolicy public decimal Decimal { get; set; } - public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, out LogEventPropertyValue result) + public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, out LogEventPropertyValue? result) { result = null; return false; @@ -43,7 +43,7 @@ public class CustomCollection : IEnumerable // wrong signature for collection initializer public void Add(string a, byte b) { } - public T First => inner.Count > 0 ? inner[0] : default; + public T? First => inner.Count > 0 ? inner[0] : default; public IEnumerator GetEnumerator() => inner.GetEnumerator(); diff --git a/test/TestDummies/DummyRollingFileAuditSink.cs b/test/TestDummies/DummyRollingFileAuditSink.cs index 28f794c..3365ba5 100644 --- a/test/TestDummies/DummyRollingFileAuditSink.cs +++ b/test/TestDummies/DummyRollingFileAuditSink.cs @@ -6,9 +6,9 @@ namespace TestDummies; public class DummyRollingFileAuditSink : ILogEventSink { [ThreadStatic] - static List _emitted; + static List? _emitted; - public static List Emitted => _emitted ?? (_emitted = new List()); + public static List Emitted => _emitted ??= new List(); public void Emit(LogEvent logEvent) { diff --git a/test/TestDummies/DummyRollingFileSink.cs b/test/TestDummies/DummyRollingFileSink.cs index f7304cd..3f8fd0e 100644 --- a/test/TestDummies/DummyRollingFileSink.cs +++ b/test/TestDummies/DummyRollingFileSink.cs @@ -6,9 +6,9 @@ namespace TestDummies; public class DummyRollingFileSink : ILogEventSink { [ThreadStatic] - static List _emitted; + static List? _emitted; - public static List Emitted => _emitted ?? (_emitted = new List()); + public static List Emitted => _emitted ??= new List(); public void Emit(LogEvent logEvent) { diff --git a/test/TestDummies/DummyWithLevelSwitchSink.cs b/test/TestDummies/DummyWithLevelSwitchSink.cs index 90856d3..2a3fadb 100644 --- a/test/TestDummies/DummyWithLevelSwitchSink.cs +++ b/test/TestDummies/DummyWithLevelSwitchSink.cs @@ -5,13 +5,13 @@ namespace TestDummies; public class DummyWithLevelSwitchSink : ILogEventSink { - public DummyWithLevelSwitchSink(LoggingLevelSwitch loggingControlLevelSwitch) + public DummyWithLevelSwitchSink(LoggingLevelSwitch? loggingControlLevelSwitch) { ControlLevelSwitch = loggingControlLevelSwitch; } [ThreadStatic] - public static LoggingLevelSwitch ControlLevelSwitch; + public static LoggingLevelSwitch? ControlLevelSwitch; [ThreadStatic] // ReSharper disable ThreadStaticFieldHasInitializer diff --git a/test/TestDummies/DummyWrappingSink.cs b/test/TestDummies/DummyWrappingSink.cs index b4bc3dd..9dc0d35 100644 --- a/test/TestDummies/DummyWrappingSink.cs +++ b/test/TestDummies/DummyWrappingSink.cs @@ -6,9 +6,9 @@ namespace TestDummies; public class DummyWrappingSink : ILogEventSink { [ThreadStatic] - static List _emitted; + static List? _emitted; - public static List Emitted => _emitted ?? (_emitted = new List()); + public static List Emitted => _emitted ??= new List(); readonly ILogEventSink _sink;