作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我误解了一些基本的东西,请多多包涵,但是......
假设一个 Controller 需要几个依赖注入(inject)服务,比如一个 DBContext、一个 AutoMapper,也许还有一些其他注册服务(当然在 Startup 类中正确注册),这可能吗?
单个注入(inject)服务的伪代码:
class MyController
{
private DBContext _context;
MyController(DBContext context)
{
_context = context;
}
}
但是如果我需要多个服务,比如(同样只是伪代码):
class My2ndController
{
private DBContext _context;
private IMapper _mapper;
private SomeConfig _config;
My2ndController(DBContext context, IMapper mapper, SomeConfig config)
{
_context = context;
_mapper = mapper;
_config = config;
}
}
这可能吗?
最佳答案
是的,这是可能的,您只需要确保在 Startup.cs
中注册您的服务。
在您的 ConfigureServices 方法中:
public void ConfigureServices(IServiceCollection services)
{
// . . . code above
services.AddTransient<IMapper, Mapper>();
/// . . . code below
}
现在,任何需要 IMapper
接口(interface)的 Controller 都将在创建时传递给 Mapper
类。
此外,只要知道除了 Transient 之外还有其他生命周期。例如 Singleton,该类只能有 1 个实例。
关于c# - 净核心 : How do I inject multiple services into a controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827688/
我是一名优秀的程序员,十分优秀!