• 【Autofac打标签模式】Component和Autowired


    【 Autofac打标签模式】开源DI框架扩展地址:

    https://github.com/yuzd/Autofac.Annotation/wiki

    Componet标签把类型注册到DI容器

    1. 把一个类型注册到DI容器

    image

    • 上面的例子就是把Student类型注册到容器

    2. 把当前类型和父类注册到DI容器

    image

    • 上面的例子就是把Student2类型注册到容器
    • 并且把Person类型也注册到容器根据Person类型拿到的是Student2的实体

    3. 把当前类型和接口注册到DI容器

    image

    • 上面的例子就是把Student3类型注册到容器
    • 并且把ISay也注册到容器根据ISay类型拿到的是Student3的实体

    4. 当继承了父类或者接口 想要指定注册类型怎么办?

    image

    • 上面的例子就是只能通过ISay拿到Student3的实体
    • 不能通过Student3类型拿到!!

    5. 怎么指定实例是单例,每次都是新的实例,还是每个Scope一个实例呢?

    image

    • 如上图所示 可以指定AutofacScope属性
    • 如果不指定就是每次获取的一个新的实例

    6. 当同一个类型多次注册,如何区分得到我想要的?

    image

    • 如上图 ISay类型有2个实现类 Student3 和 Student4 分别指定了 Key的值
    • 通过ISay + “Student3” 可以获取到 Student3的实体
    • 通过ISay + “Student4” 可以获取到 Student4的实体

    7.支持注册类型可以自动实例化对象

    image

    • 如上所示,设定AutoActivate = true代表是启动自动实例化
    • AutofacScope = AutofacScope.SingleInstance 代表单例模式
    • Student5类型会对象会自动实例化 并且以单例的方式存储在DI容器内

    8.支持设置实例化时运行指定方法

    image

    • 如上所示 设置 InitMethod 和 DestroyMethod
    • 当实例从DI容器初始化时就会调用 InitMethod
    • 当DI容器Dispose的时候会触发调用DestroyMethod

    另外

    image

    • InitMethod支持注入
    • DestroyMethod只能是无参数方法

    Autowired自动装配

    打在构造方法上 属性

    image

  • 相关阅读:
    Codeforces Round #595 (Div. 3) C题题解
    Educational Codeforces Round 83 (Rated for Div. 2)
    【算法竞赛进阶指南】Supermarket 贪心+并查集
    【算法竞赛进阶指南】字典树 The XOR Longest Path
    【算法竞赛进阶指南】字典树 The XOR Largest Pair
    【算法进阶指南】双端队列 DP+思维
    【算法进阶指南】蚯蚓 队列
    【2019 杭电多校第一场】Path 最短路+最小割
    【2017 ICPC 沈阳】G.Infinite Fraction Path 暴力优化
    【2017 CCPC 秦皇岛】A.Balloon Robot 思维
  • 原文地址:https://www.cnblogs.com/yudongdong/p/11742912.html
Copyright © 2020-2023  润新知