【发布时间】:2019-10-25 08:18:51
【问题描述】:
我创建了一个 .NET Core 类库,它定义了实用程序类接口并实现了每个接口,例如通过 ADO.NET 访问数据库等。
每个实现类都使用 NLog。这在包含和引用 .NET Core 类库的 ASP.NET Core Web 应用程序中非常有效。
但是,当我尝试在 .NET Core xUnit 测试项目的上下文中实例化这些相同的实现类时,我得到了
无法将“NLog.Logger”类型的对象转换为“Microsoft.Extensions.Logging.ILogger”类型
我搜索过类似的问题,但没有找到。
在每个类中我都声明了一个私有只读变量:
private readonly ILogger<DatabasePersistenceAdoDotNet> _logger = null;
我正在像这样实例化这个变量:
_logger = (ILogger<DatabasePersistenceAdoDotNet>)NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
这适用于包含和引用 .NET Core 类库的 ASP.NET Core Web 应用程序,但在我的 .NET Core xUnit 测试项目中崩溃了。
我怀疑这与 ASP.NET 的依赖注入在 .NET Core xUnit Test 项目中不可用有关,但我不知道如何使我的实用程序包在这两种情况下都能正常工作。
【问题讨论】:
标签: c# asp.net-core .net-core nlog