Seb*_*ood 7 castle-windsor ioc-container
我已经添加了CollectionResolver
作为我的Windsor内核的子解析器,它将正确地在已解析的对象上注入依赖项集合.也就是说,如果我有
class X { public X(IComponent[] components) { ... } }
container.Register(/* lots of IComponents */);
container.Register(Component.For<X>());
Run Code Online (Sandbox Code Playgroud)
components
当我解决它时,构造函数的参数是正确构造的
container.Resolve<X>()
Run Code Online (Sandbox Code Playgroud)
但如果相反我只是想获得组件列表本身,
container.Resolve<IComponent[]>()
Run Code Online (Sandbox Code Playgroud)
我得到一个ComponentNotFound
例外,抱怨我没有注册任何组件IComponent[]
.我发现这种不对称违反直觉因为我不确定为什么内核在解析它在构造函数/属性上发现的依赖关系时应该采取不同的行为,而不是它解析用户希望它解析的依赖关系.
Resolve
/ 的明确划分ResolveAll
是由于容器中的内部和无趣的实现细节.集合解析器是一个子依赖性解析器,因此它只适用于依赖项.
我同意这不是很直观.您可以随意登录Windsor的问题跟踪器.
归档时间: |
|
查看次数: |
1511 次 |
最近记录: |