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")));
我正在尝试将 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")));