我正在使用.net core3构建API。
在控制器中,我曾经使用静态类从sql获取信息列表或从webservices获取一些结果。
但是我认为使用依赖注入可能会更好。所以我更改了代码以使用DI。
但是我不确定这些更改实际上是否更好,如果可以,为什么?
请问它们有什么不同,哪一个更好?
原始代码:
public class TestController : Controller
{
[HttpGet("{id}")]
public async Task<IActionResult> Product(int id)
{
///SearchManager is static class, static GetProductCodesFromSearch method get list of productcode from sql
List<string> productCodes = SearchManager.GetProducCodeFromSearch();
//ProductManager is static class, GetProducts mehtod make a webrequest as parallel to some webservice get list of product
List<Product> products = await ProductManager.GetProducts();
....
return Json(new { success = true, message = "Ok" });
}
}
我更改了代码以使用DI
public class TestController : Controller
{
private readonly ISearchService _searchService;
private readonly IProductService _productService;
public TestController( ISearchService searchService,IProductService productService)
{
_searchService = searchService;
_productService = productService;
}
[HttpGet("{id}")]
public async Task<IActionResult> Product(int id)
{
//searchservice class is not static class, not static method GetProductCodesFromSearch method get list of productcode from sql
List<string> productCodes = _searchService.GetProducCodeFromSearch();
// productservice is not static class, not static GetProducts mehtod make a webrequest as parallel to some webservice get list of product
List<Product> products = await _productService.GetProducts();
....
return Json(new { success = true, message = "Ok" });
}
}
在启动中
services.AddScoped<ISearchService, SearchService>();
services.AddScoped<IProductService, ProductService>();
答案 0 :(得分:0)
带DI的版本更好。原因如下:
我还要补充一点,到处都使用静态类不是OOP方法。因此,我建议改用类和DI的实例