使用 Castle Windsor 解决打开/关闭问题,无需注入所有实例

问题描述

我有一组开放/封闭的类,它们都使用相同的接口注册

public interface IFooHandler 
{
    bool CanHandle(BarEnum bar)
    void Handle(FooMessage message);
}

当我 CTor 注入时,我也使用了:

private readonly IEnumerable<IFooHandler> _fooHandlers;

public Worker (IEnumerable<IFooHandler> fooHandlers)
{
    _fooHandlers = fooHandlers;
}

public void dobar(BarEnum bar,FooMessage message)
{
    var handler = _fooHandlers.CanHandle(bar);
    var result = handler.Handle(message);
}

这一切正常。但是,如果 IFooHandler 注册是暂时的,则每次 ctor 注入都会为每个实现创建一个新实例。 温莎城堡里有什么聪明的东西我想用另一种方式找到确切的处理程序吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)