作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
例子:
public abstract class BaseControler : Controller
{
public IUnitOfWork UnitOfWork { get; set; }
}
public class HomeController : BaseControler
{
readonly IUserRepository _userRepository;
// :-)
public HomeController(IUserRepository userRepository)
{
_userRepository = userRepository;
}
}
我们都知道,当需要依赖时,我们必须使用构造函数注入(inject)。如果它是一个可选的依赖项,我们可以改用属性注入(inject)。
但是当只有你的基类需要依赖时你应该怎么做呢?
当你使用构造函数注入(inject)时,我认为你会污染所有派生类。
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;
}
}
当只在基类中需要依赖时,在基类中使用属性注入(inject)是否合适?
最佳答案
您没有污染派生类。您明确地向消费者声明,如果没有这种依赖性,此类将无法运行。
如果基类需要此依赖关系才能正常运行,因为派生类派生自此基类,它也隐式需要此依赖关系。所以第二个例子是正确的方法。您不应该为必需的依赖项使用属性注入(inject)。
关于c# - 当基类中只需要依赖时,在基类中使用属性注入(inject)是否合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10449786/
我是一名优秀的程序员,十分优秀!