Работа над некоторыми designoptions для приложения mvc + web api. Вопрос, который я хотел бы задать, является более или менее «как бы вы сделали это лучше, или это звук ниже».Дизайн шаблона для общего контроллера/служб
У нас есть две службы, одна грубая и одна, для тех, у кого есть поддержка расширенных методов. мы должны иметь общие контроллеры, предоставляющие функциональность в соответствии с услугами. Например, упрощенное упрощение.
Примечание: ICrudService - это интерфейс для CrudService, а IExtendedCrudService наследует ICrudService.
public class CrudService<T>
{
protected readonly IUnitOfWork UnitOfWork;
public CrudService(IUnitOfWork unitOfWork)
{
UnitOfWork = unitOfWork;
}
//Methods for crud and so forth
}
public class ExtendedCrudService<T> : CrudService<T>
{
public ExtendedCrudService(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
//Methods for extended functionality
}
public abstract class ControllerBase<T>
{
private readonly ICrudService<T> _crudService;
public ControllerBase(ICrudService<T> crudService)
{
_crudService = crudService;
}
//Actions for crud stuff
}
public abstract ExtendedControllerBase<T> : ControllerBase<T>
{
private readonly IExtendedCrudService<T> _extCrudService;
public ExtendedControllerBase(IExtendedCrudService<T> extCrudService) : base(extCrudService)
{
_extCrudService = extCrudService;
}
//Action for extended stuff
}
Все расширенные объекты будут использовать один и тот же материал, как и никакие расширения наследования контроллера. Используется Mapping = Automap и DI. Так бы вы сделали это по-другому, если да, то как и почему? Попытка понять, что в основном используется для этих сценариев, поэтому все материалы глубоко оценены.