无名 发表于 2022-5-8 17:32:22

【L·S】浅谈.Net Core Dependency 一

前言#
    相信使用过Asp.Net Core开发框架的人对自带的DI框架已经相当熟悉了,很多刚开始接触.Net Core的时候觉得不适应,主要就是因为Core默认集成它的原因。它是Asp.Net Core基础核心框架之一,对于Asp.Net Core来说DI就灵魂,已经深入到这框架的骨髓里了。对于IOC和DI,可能每个人都能说出自己的理解。IOC全称是Inversion of Control翻译成中文叫控制反转,简单的说就是把对象的控制权反转到IOC容器中,由IOC管理其生命周期。DI全称是DependencyInjection翻译成中文叫依赖注入,就是IOC容器把你依赖的模块通过注入的方式提供给你,而不是你自己主动去获取,其形式主要分为构造注入和属性注入,Core自带的DI只支持构造注入,至于为什么,最多的说法就是构造注入能使得依赖变得更清晰,我既然依赖你,那么我实例化的时候你就必须得出现。而构造函数恰恰就承担着这种责任。

简单介绍#
    很多人接触它的时候应该都是从Asp.Net Core学习过程中开始的。其实它本身对Asp.Net Core并无依赖关系,Asp.Net Core依赖DI,但是这套框架本身并不只是可以提供给Asp.Net Core使用,它是一套独立的框架,开源在微软官方Github的extensions仓库中具体地址是https://github.com/dotnet/extensions/tree/v3.1.5/src/DependencyInjection。关于如何使用,这里就不再多说了,相信大家都非常清楚了。那咱们就说点不一样的。

服务注册#
我们都知道提供注册的服务名称叫IServiceCollection,我们大部分情况下主要使用它的AddScoped、AddTransient、AddSingleton来完成注册。我们就先查看一下IServiceCollection接口的具体实现,找到源码位置

Copy
public interface IServiceCollection : IList
{
}
http://cdn.u1.huluxia.com/g4/M02/A8/66/rBAAdl8HsWyAU_XeAAKqv8KiwVM181.jpg
页: [1]
查看完整版本: 【L·S】浅谈.Net Core Dependency 一