带有Autofac DI的.NET Core

时间:2017-06-13 09:51:05

标签: c# .net dependency-injection .net-core autofac

我想将Autofac集成到我的API中。解决方案分为几个项目,以便一切都保持解耦。我已经设置了这样的配置服务:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    ...
    ...

    // Autofac
    var builder = new ContainerBuilder();

    builder.RegisterType<RouteRepository>().As<IRouteRepository>();

    builder.Populate(services);
    ApplicationContainer = builder.Build();
    return new AutofacServiceProvider(ApplicationContainer);
}

但是现在集成了这个代码,我的API将不再启动。如果我在调试模式下启动它,我没有错误,但我也没有得到响应。

API登陆路线非常简单:

public IActionResult GetIndex()
{
    return Ok("You are seeing this because controller is working!");
}

此外,可能与问题有关的是RouteRepository在构造函数中将一个变量作为参数,我不知道在哪里可以定义将要传递的内容?默认情况下没有配置文件。

1 个答案:

答案 0 :(得分:0)

如果你说你的RouteRepository有一个依赖关系,那么你必须通知Autofac容器如何解决这个问题:

// singletone
builder.RegisterInstance(new TaskRepository())
   .As<ITaskRepository>();
// or instance based creation
builder.Register(c => new LogManager(DateTime.Now))
   .As<ILogger>();

Autofac无法解析您的类型。