.Net Core IOC依赖注入和Autofac(一)

.NetCore内置了简单的IOC框架,通过在Startup文件中的ConfigureServices方法进行配置即可实现依赖注入。此外,还可使用AutoFac等第三方IOC框架,通过安装相应NuGet包并在ConfigureServices方法中替换原有代码,实现更灵活的依赖管理。

自带IOC

.Net Core是自带简单的IOC框架的,实现起来也很简单,对于Asp.Net Core项目只需要在Startup文件中的ConfigureServices(IServiceCollection services)中进行下配置就行了,具体实现的代码如下

        public void ConfigureServices(IServiceCollection services) {
            services.AddMvc();

            services.AddTransient<IServiceA, ServiceA>();//DI依赖注入的实现 .net core自带的框架
        }

AddTransient指的是生命周期,他还有AddScoped,AddSingleton注册方式都是<接口,实现类>

使用的方法如,建立一控制器testController

private IServiceA _ServiceA;
public testController(IServiceA ServiceA) {
            this._ServiceA = ServiceA;
        }

是不是很熟悉,我们直接使用构造函数注入就行了。

当然这是最简单的用法了,这样你的所有接口都得一个个的注册

AutoFac

其实我们也可以使用第三方的IOC框架,如AutoFac,Untity等其他,我们就来记录下AutoFac在.Net Core下如何使用吧

首先我们要使用nutget安装下AutoFac的类库,这里我们将安装Autofac和Autofac.Extension.DependencyInjection,

其中Autofac.Configuration不一定要安装,这个是为了搭配Autofac的配置文件来使用的,之后我们再来测试这个配置文件如何在.Net Core下的使用方式

安装好,使用第三方Autofac容器来替代系统知道的IOC ,方法将ConfigureServices方法的Void返回改为返回值IServiceProvider,原来Asp.net Core自动生成额Startup.cs文件中ConfigureServices方法是Void返回值,这里我们需要改成IServiceProvider。

 public IServiceProvider ConfigureServices(IServiceCollection services) {
            services.AddMvc();
            //实例化Autofac容器
            ContainerBuilder builder = new ContainerBuilder();
            //将collection中的服务填充到Autofac
            builder.Populate(services);
            //注册
            builder.RegisterType<ServiceA>().As<IServiceA>().InstancePerLifetimeScope();

            //创建容器
            IContainer container = builder.Build();
            //第三方IOC容器来实现  两种方法都可以返回IServiceProvider
            return new AutofacServiceProvider(container);
            //return container.Resolve<IServiceProvider>();
}

这样我们就可以使用构造函数进行注入了,使用和刚才自带的IOC一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值