Хотя разумно создать свой собственный ControllerFactory
, я посчитал более удобным определить все мои контроллеры в каждом проекте, но извлечь их из контроллеров в моем общем проекте:
namespace MyProject1.Controllers
{
public class MyController : MySharedProject.Controllers.MyController
{
// nothing much to do here...
}
}
namespace MySharedProject.Controllers
{
public abstract class MyController : Microsoft.AspNetCore.Mvc.Controller
{
// all (or most) of my controller logic here...
}
}
Это имеетдополнительное преимущество в том, что у вас есть место для размещения вашей логики контроллера, которая отличается от проекта к проекту.Кроме того, другим разработчикам легче быстро найти логику вашего контроллера, поскольку контроллеры существуют в стандартном месте.
Что касается того, целесообразно ли это, я думаю, что это действительно так.Я создал некоторую общую логику управления учетными записями, которую я хочу разделить между проектами, которые в противном случае имеют совершенно другую бизнес-логику.Итак, я делю свои контроллеры учетной записи и администратора, но другие контроллеры являются специфическими для их соответствующих проектов.