例子:
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;
}
}
当依赖项仅在基类中需要时,是否适合在基类中使用属性注入?