// *********************************************************************** // Assembly : OpenAuth.Mvc // Author : yubaolee // Created : 10-26-2015 // // Last Modified By : yubaolee // Last Modified On : 10-26-2015 // *********************************************************************** // // Copyright (c) www.cnblogs.com/yubaolee. All rights reserved. // // IOC扩展 // *********************************************************************** using Autofac; using Autofac.Integration.Mvc; using OpenAuth.App; using System.Reflection; using System.Web.Mvc; using OpenAuth.Repository; using OpenAuth.Repository.Interface; namespace OpenAuth.Mvc { public static class AutofacExt { private static IContainer _container; public static void InitAutofac() { var builder = new ContainerBuilder(); //注册数据库基础操作和工作单元 builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IRepository<>)).PropertiesAutowired(); builder.RegisterType(typeof(UnitWork)).As(typeof(IUnitWork)).PropertiesAutowired(); //注册app层 builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof (UserManagerApp))).PropertiesAutowired(); // 注册controller,使用属性注入 builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); builder.RegisterModelBinders(Assembly.GetExecutingAssembly()); builder.RegisterModelBinderProvider(); // OPTIONAL: Register web abstractions like HttpContextBase. //builder.RegisterModule(); // OPTIONAL: Enable property injection in view pages. builder.RegisterSource(new ViewRegistrationSource()); // 注册所有的Attribute builder.RegisterFilterProvider(); // Set the dependency resolver to be Autofac. _container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); } /// /// 从容器中获取对象 /// /// public static T GetFromFac() { return _container.Resolve(); // return (T)DependencyResolver.Current.GetService(typeof(T)); } } }