例子:當在基類中只需要依賴項時,在基類中使用Property注入是否合適?
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;
}
}
是否approperiate使用物業注射在基類時基類只需要依賴?
我明白了你的觀點,但是我得到的問題是很多構造函數參數。重點是派生類不直接與依賴關係進行對話,而不是基類。所以我會區分直接調用依賴和間接調用依賴。 – Rookian
@Rookian,如果您遇到了具有多個構造函數參數的情況,您可能會考慮創建一個服務來聚合這些依賴項,然後僅將該服務注入構造函數。 –
+1贊成組合繼承。如果它成爲一個帶有太多構造函數參數的問題,請責怪你的繼承策略,而不是構造器注入。 –