Реорганизовал мое приложение MVC с использованием entity framework как ORM и Autofac как DiContainter.
Я столкнулся со следующей проблемой. У меня есть контроллер, в котором я выполняю грубые операции для объекта, который имеет множество сложных свойств.
здесь я показываю упрощенный пример, не имеющий ничего общего с проектом.
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, ....
Я могу получить эти значения и идентификаторы из этой службы, но затем мне нужно ввести их все в свой контроллер, например
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 контроллера.