简短的问题:
Castle Windsor 是否有类似于 Spring.Net 的“查找方法注入”的东西,可以从 XML 配置,它提供了从容器中获取瞬态实例的能力,而类不知道 IoC 容器?
长问题:
我是 Spring/Spring.Net 的长期用户,我一直在尝试使用 Castle Windsor,尝试将项目移植到它上面。Spring.Net 有一个“查找方法注入”的概念(来自 Spring 文档)......
查找方法注入是容器覆盖容器管理对象上的方法的能力,以返回在容器中查找另一个命名对象的结果。查找通常涉及原型对象,如上一节中所述。Spring 框架通过使用 System.Reflection.Emit 命名空间中的类动态生成覆盖该方法的子类来实现此方法注入。
这意味着,如果我有以下...
public class SomeTransient
{
// ... I have dependencies that need to be filled by IoC container
}
public class SomeClass
{
public virtual void Work()
{
var o = CreateTransient();
}
public virtual SomeTransient CreateTransient() { }
}
我可以指示 Spring 覆盖 CreateTransient 方法,并让该方法在每次调用该方法时返回一个新容器创建的瞬态实例(初始化它的依赖项)。其独特之处在于,它不需要直接链接到 Spring 框架(例如,SomeClass 不必实现特定的接口)。
Castle Windsor 中是否有类似的东西可以通过 XML 实现这一点?
(我最终会远离 XML 配置,但目前我只是想让它运行)