微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 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 举报,一经查实,本站将立刻删除。