使用依赖注入进行内部操作的类库的最佳实践是什么?

ale*_*rul 6 c# dependency-injection inversion-of-control

在构建足够复杂的类库以使用内部依赖注入时,我应该注意什么?

假设它将使用Castle Windsor(作为示例),配置容器的最佳位置/方法是什么,假设该库将由简单的控制台应用程序(没有DI)使用,Web表单使用相同的容器( Castle Windsor)和使用不同容器(NInject)的网络应用程序?

Kon*_*man 6

我会这里使用facade模式:在库中,在公共类上公开一个公共方法来进行容器初始化(比如简单Initialize()),并且只在库内部使用Castle Windsor,这样库客户端就不会甚至知道你正在使用它.

  • +1鉴于OP中提出的要求,Facade模式听起来很合适.但是,我会质疑隐藏DI容器作为实现细节的决定是否明智,但我想这取决于...... (5认同)