C#MVC5 AutoFac IoC-根据请求的类进行解析

时间:2018-11-08 16:18:58

标签: c# dependency-injection asp.net-mvc-5 inversion-of-control autofac

我正在尝试在MVC5项目中配置Autofac,以根据请求接口的类返回接口的特定实现。

这是我使用Laravel框架使用PHP所做的很多事情,该框架提供了如下解决方案:

$this->app->when(PhotoController::class)
          ->needs(Filesystem::class)
          ->give(function () {
              return Storage::disk('local');
          });

到目前为止,我在Google上搜索不足,大多数答案都建议我注入工厂(称为容器)或容器本身,然后从那里提取所需的服务。

真的没有办法实现与上述相似的事情吗?

1 个答案:

答案 0 :(得分:2)

有一些注册条件依赖项的选项,Autofac最简单的方法是命名注册(AFAIK):

builder.Register(c => new DiskStorage()).Named<IStorage>("disk");
builder.Register(c => new PhotoController(c.ResolveNamed<IStorage>("disk")));