Я создал библиотеку классов .NET Core, которая определяет интерфейсы служебных классов и реализует каждый интерфейс для таких вещей, как доступ к базе данных через ADO.NET и т. Д.
Каждый класс реализации использует NLog. Это прекрасно работает в веб-приложении ASP.NET Core, которое включает и ссылается на библиотеку классов .NET Core.
Однако, когда я пытаюсь создать экземпляр этих же классов реализации в контексте проекта .NET Core xUnit Test, я получаю
Невозможно привести объект типа 'NLog.Logger' к типу 'Microsoft.Extensions.Logging.ILogger'
Я искал похожие проблемы, но не нашел ни одной.
В каждом классе я объявил личную переменную только для чтения:
private readonly ILogger<DatabasePersistenceAdoDotNet> _logger = null;
И я создаю экземпляр этой переменной следующим образом:
_logger = (ILogger<DatabasePersistenceAdoDotNet>)NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
Это работает в веб-приложении ASP.NET Core, которое включает и ссылается на библиотеку классов .NET Core, но разрывается в моем проекте .NET Core xUnit Test.
Я подозреваю, что это как-то связано с тем, что инъекция зависимостей ASP.NET недоступна в проекте .NET Core xUnit Test, но я не могу понять, как заставить мой пакет утилит работать правильно в обоих контекстах.