标签:lte pre 计算机程序 搜索 产品 product 属性 项目 blog
Autofac是一个.net平台下发性能还不错的IoC框架,利用它可以实现依赖注入和控制反转,使自己的软件模块之间的耦合性大大降低,让软件扩展、维护更加容易。控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题。下面我就用Autofac实现ASP.NET mvc5.0的IOC控制反转的方法。这里用到是vs2013,Autofac ASP.NET MVC 5 Integration和mvc 5.0。Autofac ASP.NET MVC 5 Integration是Autofac的MVC封装库,我们只需要很少的代码就可以实现依赖注入。下面请看详细实例。
选中左边的联机,然后在搜索的输入框输入“autofac”
选中Autofac ASP.NET MVC 5 Integration,点击安装,这样你的项目就下载Autofac ASP.NET MVC 5 Integration了这个相关的dll的引用,并自动给添加了相关引用。
public interface IProductRepository { IQueryable<Product> Products { get; } }
public class EFProductRepository : IProductRepository { private EFDbContext context = new EFDbContext(); public IQueryable<Product> Products { get { return context.Products; } } }
public class BuyController : Controller { private IProductRepository repository; public BuyController(IProductRepository repo) { repository = repo; } //此处省略其它代码 }
using Autofac; using Autofac.Integration.Mvc; using System; using System.Collections.Generic; using System.Configuration; using System.linq; using System.Web; using System.Web.Mvc; using WenMarine.BLL.Abstract; using WenMarine.BLL.Concrete; using WenMarine.Web.Infrastructure.Abstract; using WenMarine.Web.Infrastructure.Concrete; namespace WenMarine.Web.Infrastructure { public class IocConfig { public static void RegisterDependencies() { var builder = new ContainerBuilder(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterType<EFProductRepository>().As<IProductRepository>(); //autofac 注册依赖 IContainer container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } } }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); IocConfig.RegisterDependencies(); }
就可以了。这样BuyController高层的代码根本不用改,这样做到了对扩展开发,对修改关闭(OCP-面向对象的开放封闭原则),这个是面向对象程序设计的核心。很好的做到的松耦合,模块之间的耦合性大大降低,让软件扩展、维护更加容易。
IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
标签:lte pre 计算机程序 搜索 产品 product 属性 项目 blog
原文地址:http://www.cnblogs.com/sexintercourse/p/6147573.html