在上篇文章《System.ComponentModel.Component入门》中,介绍了.NET本身的解决方案,既然.NET已经有了解决方案,为什么要自己实现呢?先看看使用.NET的方式写的代码:
 
1            }


1、通过GetService获取的组件,无法自动加入新的容器;
    在.NET中,GetService方法是由Site定义的(实际实现是容器实现的),且不包含加入新容器的参数,所以新创建的组件只能笨拙的加入容器(第3行)。

2、商业组件内部代码耦合了Container实现;
    在第1行,只能自己实例化一个容器,不管是耦合Container还是耦合自己的容器,都是违反了注射依赖的初衷。

3、难以理解
     正如上一篇文章中的回复所说的,“我还是不懂”,是的,.NET的站点和容器的设计的确让人难以理解。

基于上面的问题,我设计了一个新的接口定义:
    }

使用实例:
1    }
1、在类的定义中,继承自ServiceBase,他是IService的基础实现,当然你可以自己实现IService,实现非常简单;
2、当你需要使用别的服务时,通过Context创建新的容器,并在新的容器中创建服务,这样新的服务就自动加入新的容器,并自动初始化了Context属性。

相关文章:

  • 2021-11-19
  • 2022-12-23
  • 2023-03-21
  • 2021-12-02
  • 2021-06-18
  • 2021-09-03
  • 2022-12-23
猜你喜欢
  • 2021-07-09
  • 2023-01-28
  • 2021-11-27
  • 2021-08-26
  • 2022-12-23
  • 2022-01-06
  • 2022-12-23
相关资源
相似解决方案