C# MVC5 AutoFac IoC - 根据请求解析 class

C# MVC5 AutoFac IoC - Resolve based on requesting class

我正在尝试将 MVC5 项目中的 Autofac 配置为 return 接口的特定实现,基于请求它的 class。

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

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

到目前为止,我的谷歌搜索结果很短,大多数答案都建议我注入工厂(调用容器)或容器本身,然后从那里提取我需要的服务。

难道真的没有办法实现类似上面的东西吗?

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

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