是否可以在Castle Windsor使用范围生活方式而不通过容器?

 jnto. 发布于 2023-03-19 22:00
  • php
  • 人们普遍认为,在您的应用程序周围传递IoC容器并像服务定位器一样使用它是不好的做法.

    我更喜欢只在我的应用程序的复合根中使用容器,并倾向于只调用Resolve() - 解析我的应用程序中的顶级对象并回复容器以将依赖项注入对象图中较低的类.

    Castle Windsor最近添加了一个scoped生活方式,您可以在"using"块中调用container.BeginScope().在此"使用"块中,解析使用范围生活方式注册的组件将在"使用"块的持续时间内每次返回相同的实例.

    container.Register(Component.For().LifestyleScoped());
    
    using (container.BeginScope())
    {
        var a1 = container.Resolve();
        var a2 = container.Resolve();
        Assert.AreSame(a1, a2);
    }
    

    问:鉴于BeginScope()是在容器上的扩展方法,我看不出一个范围的生活方式可能,除非该容器被传来传去的应用程序(我真的不想做)一起使用.有没有人有任何关于范围生活方式可以使用的地方/方式的例子?

    谢谢,

    汤姆

    撰写答案
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有