1
}
1、通过GetService获取的组件,无法自动加入新的容器;
在.NET中,GetService方法是由Site定义的(实际实现是容器实现的),且不包含加入新容器的参数,所以新创建的组件只能笨拙的加入容器(第3行)。
2、商业组件内部代码耦合了Container实现;
在第1行,只能自己实例化一个容器,不管是耦合Container还是耦合自己的容器,都是违反了注射依赖的初衷。
3、难以理解
正如上一篇文章中的回复所说的,“我还是不懂”,是的,.NET的站点和容器的设计的确让人难以理解。
基于上面的问题,我设计了一个新的接口定义:
使用实例:
1
}
2、当你需要使用别的服务时,通过Context创建新的容器,并在新的容器中创建服务,这样新的服务就自动加入新的容器,并自动初始化了Context属性。