• autofac学习


    Instance Scope

    1、instance per dependency    (the default)

    builder.RegisterType<classes>();等价于

    builder.RegisterType<classes>().InstencePerDenpendency();

    每次都创建一个新的依赖

    2、single instance

    builder.RegisterType<classes>().SingleInstance();

    单例,每次都返回同一个

    3、instance per lifetime scope

    builder.RegisterType<classes>().InstancePerLifetimeScope();

    在同一个生命周期中返回同一个实例

    官方文档eg:

    using(var scope1 = container.BeginLifetimeScope())
    {
      for(var i = 0; i < 100; i++)
      {
        // Every time you resolve this from within this
        // scope you'll get the same instance.
        var w1 = scope1.Resolve<Worker>();
      }
    }
    
    using(var scope2 = container.BeginLifetimeScope())
    {
      for(var i = 0; i < 100; i++)
      {
        // Every time you resolve this from within this
        // scope you'll get the same instance, but this
        // instance is DIFFERENT than the one that was
        // used in the above scope. New scope = new instance.
        var w2 = scope2.Resolve<Worker>();
      }
    }

    scope1中每次循环返回同一个Worker实例

    scope2中每次循环返回同一个Worker实例

    但是,scope1中的实例和scoper2中的实例并不是同一个

    4、instance per matching lifetime scope

    没看懂

    builder.RegisterType<classes>.InstancePerMatchingLifetimeScope("my");

    5、instance per request

    每次请求返回一个实例(在这个请求的lifetime scope)

    per request是matching lifetime scope的一种

    InstancePerRequest()  最终执行Autofac.Core.Lifetime.MatchingScopeLifetimeTags.AutofacWebRequest  

    等价于:builder.RegisterType<classes>.InstancePerMatchingLifetimeScope("AutofacWebRequest");

  • 相关阅读:
    antd表单验证图片 必须上传
    interface和type的区别
    Typescript+React封装路由拦截组件
    redux和sessionStorage,localStorage的区别
    ES6中数组和对象的扩展运算符拷贝问题以及常用的深浅拷贝方法
    从变量提升角度看待暂时性死区
    MySQL修改root密码
    用VScode配置Python开发环境
    element UI 制作带月份快捷选项的时间选择器
    React v16.4 的生命周期
  • 原文地址:https://www.cnblogs.com/fuyujian/p/4496112.html
Copyright © 2020-2023  润新知