使用' base '关键字将服务推送到基类

本文关键字:基类 关键字 base 使用 服务 | 更新日期: 2023-09-27 18:18:46

与依赖注入一起,我使用base关键字来推送一个服务类的实例,该实例被注入到演示器中,如下所示。

class EmployeePresenter : BasePresenter
{
    public EmployeePresenter (IEmployeeView view, IEmployee model, IMessageService messageService) : base (messageService)
    {
        //
    }
    //
}

这样做的目的是现在我可以在我的BasePresenter类中使用MessageService提供的服务。

这和依赖注入一样吗?或者正确的表述是什么?任何技术解释将不胜感激!

使用' base '关键字将服务推送到基类

依赖注入仅仅是将依赖项注入到类中。通过构造函数、属性或方法。类不会请求那些依赖项(Service Location),而是将它们注入。这些术语通常与依赖倒置原则有关,因为依赖注入可以用来遵守DIP。但是,您仍然可以在违反DIP的情况下进行依赖注入。

在你的情况下,你正在注入你的服务到你的EmployeePresenter,所以你在这个类中做依赖注入。BasePresenter有一个带有一个依赖的构造函数,EmployeePresenter将依赖注入到BasePresenter的构造函数中。所以,注入基类也是依赖注入的一种形式。

请注意,基类通常是一种设计气味,因为它们往往会严重违反单一责任原则。当基类使用多个依赖项时,就会发生这种情况。通常,您会看到不相关的操作,例如横切关注点,都被放在基类中,并且基类成为某种上帝对象或实用程序类。

比起对所有横切关注点使用基类,通常有更可维护和更灵活的方法来应用这些关注点。例如使用装饰器或聚合服务。