我在 .net 框架项目中使用 Microsoft.Extensions.Logging 的 ILogger。现在我想在容器中注册 ILogger 但我不能。所有答案都是关于 .net 核心的。我试试
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
//first try
builder.RegisterGeneric(typeof(Logger<>)).As(typeof(ILogger<>));
IServiceCollection services = new ServiceCollection();
//second try
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
IContainer container = builder.Build();
httpConfig.DependencyResolver = new AutofacWebApiDependencyResolver(container);
我的课也是
public class TestController : ApiController
{
private readonly ILogger<TestController > _logger;
private readonly IService _service;
public TestController (IService service, ILogger<TestController > logger)
{
_service = service;
_logger = logger;
}
}
di 是正确的,因为其他服务已正确注入。当我在构造函数中包含记录器时,我收到消息尝试创建类型为“TestController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。