`

Autofac创建实例的方法总结

 
阅读更多

1、InstancePerDependency

对每一个依赖或每一次调用创建一个新的唯一的实例。这也是默认的创建实例的方式。

官方文档解释:Configure the component so that every dependent component or call to Resolve() gets a new, unique instance (default.)


2、InstancePerLifetimeScope

在一个生命周期域中,每一个依赖或调用创建一个单一的共享的实例,且每一个不同的生命周期域,实例是唯一的,不共享的。

官方文档解释:Configure the component so that every dependent component or call to Resolve() within a single ILifetimeScope gets the same, shared instance. Dependent components in different lifetime scopes will get different instances.


3、InstancePerMatchingLifetimeScope

在一个做标识的生命周期域中,每一个依赖或调用创建一个单一的共享的实例。打了标识了的生命周期域中的子标识域中可以共享父级域中的实例。若在整个继承层次中没有找到打标识的生命周期域,则会抛出异常:DependencyResolutionException

官方文档解释:Configure the component so that every dependent component or call to Resolve() within a ILifetimeScope tagged with any of the provided tags value gets the same, shared instance. Dependent components in lifetime scopes that are children of the tagged scope will share the parent's instance. If no appropriately tagged scope can be found in the hierarchy an DependencyResolutionException is thrown.


4、InstancePerOwned

在一个生命周期域中所拥有的实例创建的生命周期中,每一个依赖组件或调用Resolve()方法创建一个单一的共享的实例,并且子生命周期域共享父生命周期域中的实例。若在继承层级中没有发现合适的拥有子实例的生命周期域,则抛出异常:DependencyResolutionException

官方文档解释:Configure the component so that every dependent component or call to Resolve() within a ILifetimeScope created by an owned instance gets the same, shared instance. Dependent components in lifetime scopes that are children of the owned instance scope will share the parent's instance. If no appropriate owned instance scope can be found in the hierarchy an DependencyResolutionException is thrown.


5、SingleInstance

每一次依赖组件或调用Resolve()方法都会得到一个相同的共享的实例。其实就是单例模式。

官方文档解释:Configure the component so that every dependent component or call to Resolve() gets the same, shared instance.


6、InstancePerHttpRequest

在一次Http请求上下文中,共享一个组件实例。仅适用于asp.net mvc开发。
官方文档解释:Share one instance of the component within the context of a single HTTP request.
分享到:
评论

相关推荐

    autofac实例

    在这里,`FrameTest` 类依赖于 `IIconService`,而 Autofac 会确保在创建 `FrameTest` 实例时提供正确的 `IIconService` 实例。 **生命周期管理** Autofac 还支持对象生命周期管理,可以控制组件何时被创建以及...

    autofac JSON文件配置实例代码

    总结来说,通过使用Autofac的JSON文件配置,开发者可以灵活地管理依赖关系,无需在代码中硬编码,从而提高代码的可读性和可维护性。在大型项目中,这种方式尤其有用,因为它使得配置和服务的映射可以在不改变代码的...

    ASP.NET MVC3 EF4.1 Autofac的组合实例

    总结起来,这个实例结合了ASP.NET MVC3的强大Web开发框架、EF4.1的便利ORM功能和Autofac的依赖注入机制,提供了一个可扩展、易于维护的Web应用模板。对于初学者来说,这是一个很好的起点,可以帮助他们理解如何将...

    autofac的初步使用demo

    总结,Autofac作为一款强大的DI框架,通过注册、解析和生命周期管理,帮助我们构建松散耦合、可测试的应用程序。通过理解和熟练运用上述概念,开发者可以更好地利用Autofac提高代码质量。在实际项目中,根据具体需求...

    autofac-3.5.2

    ### Autofac 3.5.2:依赖注入框架详解 #### 一、概述 Autofac 是一个流行的 .NET 框架中的依赖注入(Dependency ...以上是 Autofac 3.5.2 的主要知识点总结,希望能够帮助读者更好地理解和使用这个强大的 DI 容器。

    Autofac Demo

    然后在 MVC 控制器中,我们可以直接注入 `IService`,而无需手动创建实例: ```csharp public class HomeController : Controller { private readonly IService _service; public HomeController(IService ...

    Autofac.2.8.3.862

    总结起来,Autofac.2.8.3.862是一个全面的IOC解决方案,适用于ASP.NET MVC和WebAPI项目,提供了强大的依赖注入功能,可以帮助开发者构建更灵活、可扩展和可测试的系统。通过正确配置和使用,可以显著提高开发效率和...

    ASP.NET MVC 3 和 Autofac 范例程序

    然后,你需要配置Autofac容器,注册需要的类型和服务,这可以通过创建一个`ContainerBuilder`实例并在其中定义服务和实现来完成。例如,你可能需要注册控制器、数据访问层的对象、业务逻辑层的服务等。 ```csharp ...

    Autofac的ServiceLocator模式应用,零配置

    总结来说,Autofac的ServiceLocator模式应用结合零配置,使得我们可以更轻松地管理和解耦应用程序中的组件。通过自动扫描、特性注解和模块化,我们可以减少大量手动配置,同时保持代码的清晰和可维护性。在`...

    Autofac.WebApi.2.6.3.862-beta

    总结一下,"Autofac.WebApi.2.6.3.862-beta"是Autofac为ASP.NET Web API提供的依赖注入扩展,版本2.6.3.862是测试版,包括了Autofac与Web API集成的各种功能,如依赖注入和生命周期管理。开发者可以通过NuGet来安装...

    Autofac Ioc C# Demo 控制反转

    总结来说,Autofac Ioc C# Demo展示了如何使用Autofac实现控制反转,通过依赖注入降低组件间的耦合,提高代码的可读性、可测试性和可维护性。在实际项目中,这样的设计模式能够帮助开发者构建更加健壮和易于扩展的...

    MVC4使用Autofac实现依赖注入Demo

    如上所示,`IMyService`将在运行时由Autofac自动注入到控制器的构造函数中,无需手动创建实例。 4. **生命周期管理和范围** Autofac还支持组件的生命周期管理和范围管理。例如,我们可以设置服务为单例,或者根据...

    有关IOC组件(.net core内置组件,和第三方Autofac组件)的使用,以及自己实现IOC

    通过`AddTransient`、`AddScoped`和`AddSingleton`方法可以分别设置服务的生命周期,它们决定了服务实例的创建和复用策略。 - `AddTransient`:每次请求时都会创建新的服务实例。 - `AddScoped`:在一个作用域内,...

    MVC3实例MVC3实例

    `Ajax.BeginForm()`和`Ajax.ActionLink()`等辅助方法可以创建无刷新的交互体验,提高用户体验。 **八、依赖注入(Dependency Injection)** ASP.NET MVC3支持依赖注入,允许开发者在运行时动态地注入依赖服务。这...

    SignalRChat-Autofac:扩展了Microsoft SignalRChat教程,以在SignalR集线器中使用Autofac进行依赖注入

    通过使用Autofac,我们可以轻松地将依赖注入到SignalR的集线器中,使得集线器类不需要直接创建其依赖项的实例。 **SignalR集线器(Hub)** 在SignalR中,集线器是服务器和客户端之间通信的主要接口。集线器允许双向...

    21-05-21_Nop4.4(009_把自定义接口及其类和EFCroe件间件注入到Autofac容器中,执行程序自动生数据库及其客户表并在其中插入)

    在这个实例中,我们将看到如何将自定义接口及其实现类与Entity Framework Core(EFC)数据库上下文(DbContext)集成到Autofac容器中,以及如何通过程序自动化生成数据库、创建客户表,并向其中插入客户数据。...

    NopCommerce架构分析(一)Autofac依赖注入类生成容器

    总结来说,NopCommerce通过Autofac实现依赖注入,以促进组件间的解耦和插件化开发。Autofac的高效性和灵活性使其成为NopCommerce框架的重要组成部分,而`ContainerManager`、`ContainerConfigurer`、`EngineContext`...

    MyAutofac Demo

    3. **组件激活**: 当需要一个服务时,Autofac 会创建一个实例(或从缓存中获取),这就是组件激活。你可以指定实例是单例(Singleton)、每次请求新实例(Per Dependency)或其他生命周期策略。 4. **依赖解析**: ...

    c# Nhibernate 使用实例

    总结,C# NHibernate的使用实例涵盖了ORM的核心概念、不同应用场景下的实现方式,以及通过代码生成器提高开发效率的方法。理解并熟练掌握这些知识点,将有助于提升.NET开发中的数据操作能力,实现更高效、更优雅的...

Global site tag (gtag.js) - Google Analytics