作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在实例化一个类时,Windsor 默认将类的所有公共(public)属性视为可选依赖项并尝试满足它们。就我而言,这会创建一个相当复杂的循环依赖,导致我的应用程序挂起。
我如何明确告诉温莎城堡它不应该试图满足公共(public)属性(property)的要求?我认为一定有那个程度的属性。但是我找不到它,所以请让我知道适当的命名空间/程序集。
如果有任何方法可以在没有属性(例如 Xml 配置或通过代码配置)的情况下执行此操作,那将是更可取的,因为发生这种情况的特定库迄今为止不需要依赖于 caSTLe。
最佳答案
您可以使用 Castle.Core.DoNotWireAttribute属性来阻止 IoC 容器连接属性(这是在 CaSTLe.Core 程序集中,这意味着您的库只需要依赖于轻量级 CaSTLe.Core 程序集 - 例如,如果您想使用代码完全没有控制容器的反转,或者在不同的 IoC 容器中)。
我不相信有任何方法可以防止在 Xml 配置中发生连线,但是添加对此的支持相当容易 - 如果我必须这样做,我可能会:
kernel.GetHandler(typeof(MyComponent)).ComponentModel.Dependencies.RemoveAll(d => d.DependencyKey == "PropertyThatShouldNotBeWired");
关于inversion-of-control - 温莎容器 : How to specify a public property should not be filled by the container?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178611/
我是一名优秀的程序员,十分优秀!