Допустим, у меня есть такой класс контроллеров.
public class InStorePickupController : Controller
{
private readonly IToppingService _toppingService;
public InStorePickupController(IToppingService toppingService)
{
this._toppingService = toppingService;
}
public ActionResult GetPizza()
{
var pizzaModel = new PizzaModel();
pizzaModel = MakePizza(pizzaModel);
return View(pizzaModel);
}
[NonAction]
public PizzaModel MakePizza(PizzaModel pm)
{
var toppings = _toppingService.GetAllToppings();
//roll out dough
//put toppings on pizza
//bake pizza
return pm;
}
}
Но у меня также есть другой класс контроллеров, где я хочу использовать то же действие «Make Pizza» без действия.
public class DeliveryController : Controller
{
private readonly IToppingService _toppingService;
public DeliveryController(IToppingService toppingService)
{
this._toppingService = toppingService;
}
public ActionResult GetPizza()
{
var pizzaModel = new PizzaModel();
pizzaModel = MakePizza(pizzaModel);
return View(pizzaModel);
}
}
Это простой пример, но он очень близко соответствует моей реальной ситуации. Разница лишь в том, что:
- У меня есть несколько неактивных методов, и они довольно сложны (много вычислений).
- У меня довольно много контроллеров, которым нужен доступ к этим не действиям. Это не ползучесть контроллера, поэтому объединение их не сработает.
- Каждый контроллер имеет несколько необходимых служб в конструкторе.
Я мог бы каждый контроллер наследовать от базового класса контроллера, но я продолжаю получать жалобы на конструктор без параметров.
А как насчет статических классов?
Мне просто нужно небольшое руководство. Спасибо.