c# - 使用 Scrutor 自动进行依赖注入
问题描述
我的项目中有很多服务,并尝试使用Scrutor进行自动 DI,而不是在 startup.cs 上手动注册每个服务
酒吧服务.cs
public class BarService : IBar
{
public Bar Get(int id)
{
var bar = new Bar
{
bar_date = DateTime.UtcNow,
bar_name = "bar"
};
return bar;
}
public List<Bar> GetMany()
{
List<Bar> list = new List<Bar>
{
new Bar
{
bar_date = DateTime.UtcNow,
bar_name = "bar 1"
},
new Bar
{
bar_date = DateTime.UtcNow,
bar_name = "bar 2"
}
};
return list;
}
}
IBar.cs
public interface IBar
{
Bar Get(int id);
List<Bar> GetMany();
}
酒吧.cs
public class Bar
{
public string bar_name { get; set; }
public DateTime bar_date { get; set; }
}
酒吧控制器.cs
[Route("api/[controller]")]
[ApiController]
public class BarController : ControllerBase
{
public IBar _service { get; set; }
public BarController(IBar service)
{
_service = service;
}
[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
var result = _service.Get(id);
if (result != null)
{
return Ok(result);
}
return NotFound("No data found");
}
[HttpGet]
public IActionResult GetMany()
{
var result = _service.GetMany();
if (result != null)
{
return Ok(result);
}
return NotFound("No data found");
}
}
添加services.AddScoped<IBar, BarService>();
到 Startup.cs 可以正常工作,但不能使用 Scrutor 来自动映射。
services.Scan(scan =>
scan.FromCallingAssembly()
.AddClasses()
.AsMatchingInterface());
我收到错误
解决方案
推荐阅读
- apache-spark - Spark 中的广播变量存储在哪里?
- css - 悬停时图像重叠标题
- python - FilleNotFoundError: [WinError 2] 系统找不到指定的文件
- php - 如何在 Codeigniter v4 中自动加载自定义配置文件?
- javascript - ES6 箭头函数:为什么“this”在构造函数和对象字面量中使用时指向不同?
- javascript - 你如何设置带有额外导入的 Vue 3 main.js 文件?
- go - 当多个客户端使用 Gorilla websocket 时非常慢
- android - 在几分之一秒内在 TextView 中使用非常大的 HTML 内容
- r - R:平均列中的语法问题
- bash - 使用 imagemagick 更改动画图像背景