译:曹阳
这一节介绍Unity容器的创建步骤,通过容器登记映射和单例,登记已经存在的实例对象,以及如何给容器指定配置信息。
典型目标在这一节,在此场景中,将看到如何建立 Unity 容器和任意嵌套的容器,以致于应用程序代码可以获取指定的具体对象的实例的引用,基于对接口或者更通用对象类型如基类或者被继承的类的请求。
解决方案你可以通过注册映射,使用以下三种方法来创建Unity容器:
- 提供遵守展示在Unity 应用程序块的源模式中的模式的 XML 格式的配置文件。
- 用容器的方法为默认和命名映射添加指定的注册条目。
- 使用容器的配置 API 为容器提供自定义的配置。
你可以在代码中使用以下两个方法给一个Unity容器注册映射:
- RegisterType。此方法注册使用容器的类型。在适当的时候,容器将构建指定的类型的实例。这可以通过类特性或者在调用 Resolve 方法时响应依赖注入。它构建的对象的生命周期与在方法的参数中指定的生命周期一致。如果没有指定生命周期的值,注册的类型的生命周期将是短暂的,这意味着每次对 Resolve 的调用都会创建一个新的实例。
- RegisterInstance。此方法将指定的类型的已有实例注册到容器,并带有指定的生命周期。窗口将在生命周期内返回已有实例。如果没有指定生命周期,实例的生命周期将由容器所控制。它将在每次对 Resolve 的调用中返回对原始对象的引用。
注意:可以使用 Unity 容器生成任何有公开的构造函数的对象的实例(换句话说,可以使用“new”操作符的对象),而不需要使用容器来注册用于那种类型的映射。在调用 Resolve 方法并且指定了没有注册的类型的默认实例时,容器简单的生成并返回类型的实例。然而,这仅在生成的对象包含依赖特性的时候才切实实用,容器用特性来注入依赖对象到请求的对象。
本主题的余下部分讨论了可以用代码注册映射到容器的方法。它包含下列过程:
- 为接口或类注册到具体类的映射
- 将类或类型注册为单件实例
- 注册已有对象为一个单件实例
- 使用容器的 fluent 接口。
对于如何用配置文件指定配置的细节,请参见
输入配置信息。对于如何创建自定义配置,请参见
扩展和修改 Unity 应用程序块。
为接口或类注册到具体类的映射