【发布时间】:2012-05-04 13:26:35
【问题描述】:
例子:
public abstract class BaseControler : Controller
{
public IUnitOfWork UnitOfWork { get; set; }
}
public class HomeController : BaseControler
{
readonly IUserRepository _userRepository;
// :-)
public HomeController(IUserRepository userRepository)
{
_userRepository = userRepository;
}
}
我们都知道,当依赖是必需的时,我们必须使用构造函数注入。如果它是一个可选依赖,我们可以使用Property Injection代替。
但是当只有你的基类需要依赖时,你应该怎么做呢?
当您使用 构造函数注入 时,我认为您会污染所有派生类。
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;
}
}
当只在基类中需要依赖时,在基类中使用属性注入是否合适?
【问题讨论】:
标签: c# dependency-injection inversion-of-control property-injection