Поделиться через


AddProvider проверяет, что поставщик не поддерживает NULL

Microsoft.Extensions.Logging.LoggerFactory реализует ILoggerFactory с помощью метода AddProvider(ILoggerProvider). Поставщики со значением null не принимаются и приводят к созданию исключения ArgumentNullException.

Представленные версии

6.0 RC 1

Прежнее поведение

Ранее AddProvider(ILoggerProvider) не выполнял никакой проверки для аргумента provider. Поэтому метод считал "допустимым" поставщиком значение null и добавлял его в коллекцию поставщиков.

Новое поведение

Начиная с .NET 6 поставщики со значением null не принимаются и AddProvider(ILoggerProvider) создает исключение ArgumentNullException, если аргумент поставщика ведения журнала имеет значение null. Например, следующий код создает исключение ArgumentNullException:

var factory = new LoggerFactory();
((ILoggerFactory)factory).AddProvider(null));

Тип критического изменения

Это изменение может повлиять на совместимость исходного кода.

Причина изменения

Прежнее поведение приводило к тому, что некоторые операции в классе создавали ненужные исключения NullReferenceException. Например, метод LoggerFactory.Dispose() перехватывает исключение и не выполняет никаких действий.

Убедитесь, что вы не передаете значение null в качестве поставщика AddProvider(ILoggerProvider).

Затронутые API