zoukankan      html  css  js  c++  java
  • 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");

  • 相关阅读:
    oracle中的DECODE
    服务器修改密码cmd
    oracle 创建用户,授权用户,创建表,查询表
    Oralce 处理字符串函数
    oracle 非数字型转数字型
    d3
    linux SVN 安装配置
    JAVA with Cassandra
    Struts2实现文件上传和下载
    xmanager 5图文使用教程
  • 原文地址:https://www.cnblogs.com/fuyujian/p/4496112.html
Copyright © 2011-2022 走看看