在构建足够复杂的类库以使用内部依赖注入时,我应该注意什么?
假设它将使用Castle Windsor(作为示例),那么配置容器的最佳位置/方法是什么,假设该库将由简单的控制台应用程序(没有DI)使用,Web表单使用相同的容器(Castle Windsor)和使用不同容器的Web应用程序(NInject)?
答案 0 :(得分:6)
我会在这里使用the facade pattern:在库中,在进行容器初始化的公共类上公开一个公共方法(例如一个简单的Initialize()
),并且只在内部使用Castle Windsor。库,因此库客户端甚至不知道您正在使用它。
答案 1 :(得分:2)
不是说答案不会起作用,但我想任何落在这里的人都应该看看this Q/A。阅读之后,我必须同意using an IoC within a class library smells like a ServiceLocator
(反模式)和Coupling a library to a container is a smell
。
最初我以为我会做一件好事,我做的最好的事情就是先查一下。