例:
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;
}
}
基本クラスでのみ依存関係が必要な場合、基本クラスでプロパティ注入を使用するのは適切ですか?