Пример:
public abstract class BaseControler : Controller
{
public IUnitOfWork UnitOfWork { get; set; }
}
public class HomeController : BaseControler
{
readonly IUserRepository _userRepository;
// :-)
public HomeController(IUserRepository userRepository)
{
_userRepository = userRepository;
}
}
Мы все знаем, что мы должны использовать Инъекции конструктора, когда требуется зависимость. Если это необязательная зависимость, мы можем вместо этого использовать Вложение свойств.
Но что делать, если только ваш базовый класс требует зависимости?
Когда вы будете использовать Инъекция конструктора, вы, на мой взгляд, загрязняете все производные классы.
public abstract class BaseControler : Controller
{
readonly IUnitOfWork _unitOfWork;
public BaseControler(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
public class HomeController : BaseControler
{
readonly IUserRepository _userRepository;
// :-(
public HomeController(IUserRepository userRepository,
IUnitOfWork unitOfWork) : base(unitOfWork)
{
_userRepository = userRepository;
}
}
Согласуется ли использование Инъекции свойств в базовом классе, когда зависимость требуется только в базовом классе?