• AutoFac文档9(转载)


    目录

    1. 开始
    2. Registering components
    3. 控制范围和生命周期
    4. 用模块结构化Autofac
    5. xml配置
    6. 与.net集成
    7. 深入理解Autofac
    8. 指导
    9. 关于
    10. 词汇表

    关系类型

    Autofac提供拆箱即用的关系类型。

    Autofac会对下面列出的关系类型特别解释。下面列出的每一种关系类型,Autofac都会在需要的时候提供一种默认实现。

    比如说,当Autofac会 IEnumerable 类型的构造函数参数进行注入时,它不会寻找提供 IEnumerable 的component,而是容器会找出所有的ITasks实现然后全部注入。

    (你可以显示注册这些类型的实现来覆盖默认行为)

    Relationship

    Type

    Meaning

    A needs B

    B

    Dependency

    A needs B at some point in the future

    Lazy<B>

    Delayed instantiation

    A needs B until some point in the future

    Owned<B>

    Controlled lifetime

    A needs to create instances of B

    Func<B>

    Dynamic instantiation

    A provides parameters of types X and Y to B

    Func<X,Y,B>

    Parameterisation

    A needs all the kinds of B

    IEnumerable<B>

    Enumeration

    A needs to know X about B

    Meta<T> and Meta<B,X>

    Metadata interrogation

    A needs to choose B based on X

    IIndex<X,B>

    Lookup

    组合关系类型

    关系类型可以被组合使用,所以:

    1
    IEnumerable<Func<Owned<ITask>>>

    上面这行代码将向下面这样被解释:

    • 属性所有的实现
    • 返回一个工厂
    • 生命周期被控制
    • ITask服务

    标准的类型组合

    .NET Type

    Equivalent to

    Lazy<T,M>

    Meta<Lazy<T>, M>

    ExportFactory<T>

    Func<Owned<T>>

    ExportFactory<T,M>

    Meta<Func<Owned<T>>>

    注意, ExportFactory 类型包含在Silverlight4中而不是.NET中,所以还不被Autofac支持

    关系类型和容器的独立性

    Autofac中自定义的容器类型不会强迫你将程序紧紧的和Autofac绑在一起。它们会为容器配置提供一种一致的编程模型,和你写其他component一样

    例如,你仍然可以创建一个自定义的ITaskFactory ,但是如果有需要的话你可以提供基于 Func<Owned>实现的AutofacTaskFactory

  • 相关阅读:
    EntityFramework之领域驱动设计实践(三)(转)
    System.Collections.ObjectModel.Collection
    EntityFramework之领域驱动设计实践 (一)(转)
    C#中Collection,List和ArrayList的区别(转)
    家常菜
    WCF开发实战系列二:使用IIS发布WCF服务(转)
    Broken Flowers(破碎之花)
    EntityFramework之领域驱动设计实践(五)(转)
    用Restful方式调用WCF进行上传下载(转)
    EntityFramework之领域驱动设计实践(二)(转)
  • 原文地址:https://www.cnblogs.com/sandea/p/3289932.html
Copyright © 2020-2023  润新知