Asp.Net Mvc使用Autofac实现依赖注入

Asp.Net Mvc使用Autofac实现依赖注入

在asp.net mvc控制器中使用Autofac来解析依赖

如下Controller中使用构造函数依赖注入接口IPeople

public class AutoFacController : Controller
{
    public IPeople _people;

    public AutoFacController(IPeople people)
    {
        _people = people;
    }
    // GET: AutoFac
    public ActionResult Index()
    {
        ViewBag.test = _people.Getpeople();
        return View();
    }
}

如何使用AutoFac如下:

1、在App_Start创建类文件AutofacConfig.cs

引用

using Autofac;
using Autofac.Integration.Mvc;

以下为逐个注册方法:

//创建autofac管理注册类的容器实例
var builder = new ContainerBuilder();
//下面就需要为这个容器注册它可以管理的类型
//builder的Register方法可以通过多种方式注册类型,之前在控制台程序里面也演示了好几种方式了。
builder.RegisterType<People>().As<IPeople>();

//builder.RegisterType<DefaultController>().InstancePerDependency();
//使用Autofac提供的RegisterControllers扩展方法来对程序集中所有的Controller一次性的完成注册
builder.RegisterControllers(Assembly.GetExecutingAssembly());
//生成具体的实例
var container = builder.Build();
//下面就是使用MVC的扩展 更改了MVC中的注入方式.
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

以下为批量注册方法:

public class AutofacConfig
{
    /// <summary>
    /// 负责调用autofac框架实现业务逻辑层和数据仓储层程序集中的类型对象的创建
    /// 负责创建MVC控制器类的对象(调用控制器中的有参构造函数),接管DefaultControllerFactory的工作
    /// </summary>
    public static void Register()
    {
        //实例化一个autofac的创建容器
        var builder = new ContainerBuilder();
        //告诉Autofac框架,将来要创建的控制器类存放在哪个程序集 (Wchl.CRM.WebUI)
        Assembly controllerAss = Assembly.Load("Wchl.WMBlog.WebUI");
        builder.RegisterControllers(controllerAss);

        //告诉autofac框架注册数据仓储层所在程序集中的所有类的对象实例
        Assembly respAss = Assembly.Load("Wchl.WMBlog.Repository");
        //创建respAss中的所有类的instance以此类的实现接口存储
        builder.RegisterTypes(respAss.GetTypes()).AsImplementedInterfaces();

        //告诉autofac框架注册业务逻辑层所在程序集中的所有类的对象实例
        Assembly serpAss = Assembly.Load("Wchl.WMBlog.Services");
        //创建serAss中的所有类的instance以此类的实现接口存储
        builder.RegisterTypes(serpAss.GetTypes()).AsImplementedInterfaces();

        // builder.RegisterType<>().As<>();

        //创建一个Autofac的容器
        var container = builder.Build();
        //将MVC的控制器对象实例 交由autofac来创建
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }
}

2、在全局Global.asax类Application_Start()方法中调用AutofacConfig配置类方法

protected void Application_Start(object sender, EventArgs e)
{
    AutofacConfig.Register();
}

3、Web Api配置Autofac方法

引用

using Autofac.Integration.WebApi;

参考资料:http://docs.autofac.org/en/latest/integration/webapi.html

var builder = new ContainerBuilder();

// Get your HttpConfiguration.
var config = GlobalConfiguration.Configuration;

// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

// OPTIONAL: Register the Autofac filter provider.
builder.RegisterWebApiFilterProvider(config);

// Set the dependency resolver to be Autofac.
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

原文地址:https://www.cnblogs.com/eedc/p/6127181.html

仅供学习参考,如有侵权联系我删除

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值