.Net Core 将默认DI改为Autofac

16人阅读 评论(0) 收藏 举报
分类:

首先引用Autofac相关的包

1.在程序包管理控制台

Install-Package Autofac.Configuration

Install-Package Autofac.Extensions.DependencyInjection

2.添加完成后,修改Program.cs文件(注意命名空间改成自己的)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Autofac.Extensions.DependencyInjection;


namespace ET.BUA.Web
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .ConfigureServices(services => services.AddAutofac())
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .UseApplicationInsights()
                .Build();


            host.Run();
        }
    }

}

3.将默认的public void ConfigureServices这个方法替换成如下代码

public IServiceProvider ConfigureServices(IServiceCollection services)

        {

            //注册数据库

            services.AddDbContext<BUAContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("BUAConnection")));

            
            services.AddRouting(options => options.LowercaseUrls = true);

            
            services.AddMvc().AddControllersAsServices();


            var builder = new ContainerBuilder();

            //注册UnitOfWork,此处先注释掉
            //builder.RegisterType<IUnitOfWork>().AsImplementedInterfaces().InstancePerLifetimeScope();

            //注册仓储
            builder.RegisterModule(new RepositoryModule());

            //注册服务
            builder.RegisterModule(new ServiceModule());


            builder.Populate(services);


            return new AutofacServiceProvider(builder.Build());

        }

仓储注入模块

using Autofac;
using ET.BUA.Domain.Repository.Implementation;
using System.Linq;


namespace ET.BUA.Web.Modules
{
    public class RepositoryModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterAssemblyTypes(typeof(ApplicationRepository).Assembly)
                .Where(t => t.Name.EndsWith("Repository"))
                .AsImplementedInterfaces()
                .InstancePerLifetimeScope();
        }
    }
}

服务注入模块

using Autofac;
using ET.BUA.Service.Service.Implementation;
using System.Linq;

namespace ET.BUA.Web.Modules
{
    public class ServiceModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterAssemblyTypes(typeof(ApplicationService).Assembly)
                .Where(t => t.Name.EndsWith("Service"))
                .AsImplementedInterfaces()
                .InstancePerLifetimeScope();
        }
    }

}

4.在Controlle中引入构造方法,作为参数传递

       private readonly IApplicationService _applicationService;

        public AppController(IApplicationService applicationService)
        {
            this._applicationService = applicationService;
        }

查看评论

课程标题改为:Flume数据采集系统(上)

主要对数据基石基础架构及报表系统的数据收集、数据传输以及数据清洗入库这一流程的介绍,同时基于4个课时的时间里,让大家熟知什么是Flume,FlumeOG基本架构及日志收集系统特征。
  • 2016年04月22日 13:41

Asp.Net Core 2.0 之旅---AutoFac IOC容器的使用教程

其实早就想开 Core 2.0的文章了,奈何基础薄弱。只能猥琐发育。。。哈哈 Core 2.0 作为开源跨平台框架。现在它的热度是比较高的。也是微软老大重点项目。 接下来我会一步步的演示Asp.Net...
  • huanghuangtongxue
  • huanghuangtongxue
  • 2017-12-27 17:12:37
  • 1260

ASP.NET Core 2.0 依赖注入

问题 如何使用 ASP.NET Core 服务容器进行依赖注入? 答案 创建一个服务 public interface IGreetingService {    string G...
  • sD7O95O
  • sD7O95O
  • 2017-10-27 00:00:00
  • 854

ASP.NET Core依赖注入解读&使用Autofac替代实现

1. 前言关于IoC模式(控制反转)和DI技术(依赖注入),我们已经见过很多的探讨,这里就不再赘述了。比如说必看的Martin Fowler《IoC 容器和 Dependency Injection ...
  • sD7O95O
  • sD7O95O
  • 2017-09-25 00:00:00
  • 618

【视频教程】使用UIAutomation开发软件外挂

UIAutomation是.Net 3.5之后提供的“界面自动化测试”技术,本来是给测试人员用的,不过UIAutomation由于也是界面自动操作的技术,比直接使用keybd_event、GetWin...
  • cownew
  • cownew
  • 2015-10-14 08:21:46
  • 3000

.net core2.0下Ioc容器Autofac使用

Autofac基本使用  Autofac是一款轻量级的IOC框架,使用率上还是挺高的,官方网站http://autofac.org,源码下载地址https://github.com/autofac/A...
  • sD7O95O
  • sD7O95O
  • 2018-03-30 00:00:00
  • 69

<em>Autofac</em> 未能加载程序集 system.<em>core</em>

未能加载文件或程序集“System.<em>Core</em>, Version=<em>2.0</em>.5.0, Culture=neutral, ...您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.<em>net</em>!...
  • 2018年04月22日 00:00

AutoFac属性自动注入

大多数时候,我们都是以下面这种方式用Autofac来实现依赖注入: // Create the builder with which components/services are register...
  • allenwdj
  • allenwdj
  • 2016-09-22 15:06:09
  • 3585

Asp.Net Core 2.0 之旅---AutoFac 仓储泛型的依赖注入

在上节的博客中AutoFac IOC容器的使用教程的结尾出提到在下一节会详细讲解仓储泛型的依赖注入。将会在本次的文章通过详细的例子来演示。 1、为何需要仓储的泛型注入? 首先我先放一段代码: pub...
  • huanghuangtongxue
  • huanghuangtongxue
  • 2017-12-30 14:42:53
  • 134

.Net Core 将默认DI改为Autofac

首先引用Autofac相关的包1.在程序包管理控制台Install-Package Autofac.ConfigurationInstall-Package Autofac.Extensions.De...
  • ujm097
  • ujm097
  • 2018-04-16 10:08:21
  • 16
    个人资料
    等级:
    访问量: 6698
    积分: 388
    排名: 20万+
    最新评论