在控制器mvc中注入多个服务?

时间:2017-03-30 12:56:48

标签: asp.net-mvc entity-framework-6 autofac service-layer

使用实体框架将ORM和Autofac重构为我的MVC应用程序,作为DiContainter。

我遇到了下一个"问题。 我有一个控制器,我对一个具有许多复杂属性的对象进行crud操作。

这里我展示了一个与项目无关的简化示例。

public class Car  
{
       public int Id {get;set;}
       public int Doors { get; set; }
       public double Miles { get; set; }
       .....
       public Brand Brand { get; set; }
       public Engine Engine { get; set; }
       public FuelType FuelType {get;set;}

}

public class Brand 
{
    public int Id { get; set; }
    public string Name  { get; set; }

    .....

}// Same for Engine, FuelType,....

对于所有这些对象我都有CRUD操作服务

对于没有复杂属性的对象,我将1个服务注入我的控制器,如

public class BrandController : Controller
{

    readonly IBrandService brandService;
    public KwaliteitController(IBrandService  _BrandService)
    {
        brandService = _BrandService;
    }
   //here comes actionresults for CRUD operations and etcetera...
 }

这很好用,看起来很干净。 现在的问题是我的CarController我还需要所有的名字 "或其他属性"适用于Fueltype,Brand,Engine,....

我可以从服务中检索这些值和ID,但我必须将它们全部注入我的控制器,如

     public class CarController : Controller
{
    readonly ICarService carService;
    readonly IBrandService brandService;
    readonly IFuelTypeService fuelTypeService;
    readonly IEngineService engineService;
    public KwaliteitController(ICarService _CarService IBrandService  _BrandService,.....)
    {
        carService = _CarService;
        brandService = _BrandService;
        ....
    }
 }

实际上我有超过10个属性的对象,所以我不得不在我的控制器中实现超过X的服务。 这对我来说就像一个严重的矫枉过正。 有没有办法我可以完成这个,而不必使用我的所有服务为1控制器。

0 个答案:

没有答案