ASP.NET5中的依赖注入和对象处理谁能帮我理解一下Asp.Net5中的依赖注入和对象配置的来龙去脉。我需要知道我的服务是否实现了IDispose接口,谁来调用dispose方法。publicvoidConfigureServices(IServiceCollectionservices){services.AddTransient();服务.AddScoped();服务.AddSingleton();服务.AddInstance();}IServiceCollection包含应用程序中可用的服务集。您定义要使用的服务及其生命周期,应用程序将为您实例化和处理它们。有4种不同的生命周期:Transient瞬态生命周期服务在每次被请求时创建。此生命周期最适合轻量级、无状态的服务。Scope为每个请求创建一次Scoped生命周期服务。单例生命周期服务是在第一个请求上创建的,然后每个后续请求都将使用相同的实例。如果您的应用程序需要单例行为,建议让服务容器来管理服务的生命周期,而不是实现单例设计模式并自行管理对象的生命周期。示例您可以选择将实例直接添加到服务容器中。如果这样做,该实例将用于所有后续请求(该技术将创建一个Singleton范围的实例)。实例服务和单例服务之间的一个关键区别是实例服务是在ConfigureServices中创建的,而单例服务是在第一次请求时延迟加载的。asp.net5官方文档很棒,花时间阅读它:http://docs.asp.net/en/latest/fundamentals/dependency-injection.html文档没有提到依赖注入服务如何处理dependencylifetimes,但如果你在代码中搜索,你会发现管理生命周期的ServiceProvider类:ServiceManager类更具体地说,当一个范围被创建时,服务范围工厂返回一个新的服务范围,它是用服务实例化的提供商。当依赖注入服务必须处理服务时,它会调用服务范围的处理方法,该方法调用服务提供者的处理方法。服务提供商如何运作?他在一个名为_resolvedServices的属性中拥有所有服务范围,在一个名为_transientDisposables的属性中拥有所有瞬态一次性用品。当调用服务提供者的dispose()方法时,它会遍历他在这两个属性中拥有的所有项目,并为每个对象调用他的dispose方法。全部源码在这里:依赖注入源码以上就是C#学习教程的全部内容:ASP.NET5中的依赖注入和对象处理,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
