使用Autofac在ASP.NET Web API上实现依赖注入

本文介绍如何在ASP.NET Web API中使用Autofac进行依赖注入。首先通过NuGet安装Autofac.WebApi包,并配置Autofac容器来注册控制器和服务。此外,还介绍了Autofac MVC4的集成方式。
摘要由CSDN通过智能技术生成


http://www.cnblogs.com/zhouruifu/archive/2012/04/03/dependency-injection-in-asp-net-web-api-using-autofac.html


【原文】Dependency Injection in ASP.NET Web API using Autofac

摘要

在ASP.NET Web API里使用Autofac

通过NuGet安装Autofac.WebApi。(当然要先安装Autofac.dll)。

PM > Install-Package Autofac.WebApi

引用如下命名空间。

using Autofac;
using Autofac.Integration.WebApi;

再按照如下代码配置Autofac。

复制代码
 public static class Bootstrapper
    {
        public static void Run()
        {
            SetAutofacWebAPI();
        }
        private static void SetAutofacWebAPI()
        {
            var configuration = GlobalConfiguration.Configuration;
            var builder = new ContainerBuilder();
            // Configure the container  
            builder.ConfigureWebApi(configuration);
            // Register API controllers using assembly scanning. 
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
            builder.RegisterType<DefaultCommandBus>().As<ICommandBus>()
                .InstancePerApiRequest();
            builder.RegisterType<UnitOfWork>().As<IUnitOfWork>()
                .InstancePerApiRequest();
            builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
                .InstancePerApiRequest();
            builder.RegisterAssemblyTypes(typeof(CategoryRepository)
                .Assembly).Where(t => t.Name.EndsWith("Repository"))
                .AsImplementedInterfaces().InstancePerApiRequest();
            var services = Assembly.Load("EFMVC.Domain");
            builder.RegisterAssemblyTypes(services)
                .AsClosedTypesOf(typeof(ICommandHandler<>))
                .InstancePerApiRequest();
            builder.RegisterAssemblyTypes(services)
                .AsClosedTypesOf(typeof(IValidationHandler<>))
                .InstancePerApiRequest();
            var container = builder.Build();
            // Set the WebApi dependency resolver.  
            var resolver = new AutofacWebApiDependencyResolver(container);
            configuration.ServiceResolver.SetResolver(resolver);
        }
    }
复制代码

在Application_Start里调用Bootstrapper.Run()。

复制代码
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
            BundleTable.Bundles.RegisterTemplateBundles();
            //Call Autofac DI configurations   
            Bootstrapper.Run();
        }
复制代码

Autofac.Mvc4

Autofac ASP.NET MVC integration已经升级到MVC4。 NuGet pacakgeAutofac.Mvc4。它提供了ASP.NET MVC4里的依赖注入(不包括Web API)。Autofac.Mvc3Autofac.Mvc4没有什么语法上的不同。

源码

http://efmvc.codeplex.com/ 

一个样例Web程序,用来展示ASP.NET MVC、EF Code First以及架构实践。

 

相关资源:

Autofac官网 http://code.google.com/p/autofac/

Autofac ASP.NET MVC3 Ingetation http://code.google.com/p/autofac/wiki/Mvc3Integration


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值