using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using Autofac; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity; using Weee.DAL; using Weee.Models; using Weee.Service; using Weee.Controllers; using System.Reflection; using Weee.Filter; namespace Weee { public class IoCConfig { public static void RegisterDependencies() { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterControllers(typeof(MvcApplication).Assembly); containerBuilder.RegisterApiControllers(typeof(MvcApplication).Assembly); containerBuilder.RegisterModule(new AutofacWebTypesModule()); // to do registration module includes dependency injection bindings which is defined at the end of the post containerBuilder.RegisterModule(new RegistrationModule()); containerBuilder.RegisterFilterProvider(); containerBuilder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); var container = containerBuilder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container); // DependencyResolver.SetResolver(new AutofacWebApiDependencyResolver(container)); } } public class RegistrationModule : Autofac.Module { protected override void Load(ContainerBuilder builder) { //builder.RegisterType() // .As() // .InstancePerLifetimeScope(); builder.RegisterType() .AsSelf() .InstancePerRequest(); builder.RegisterType>() .AsSelf(); builder.Register(x => new UserStore(x.Resolve())) .As>(); builder.Register(x => new UserStore(x.Resolve())) .AsSelf(); builder.RegisterType().PropertiesAutowired(); builder.RegisterType().PropertiesAutowired(); //builder.RegisterType>() // .As>(); //builder.RegisterType() // .AsSelf() // .InstancePerRequest(); //builder.RegisterType() // .AsSelf() // .InstancePerRequest(); //builder.RegisterType() // .AsSelf() // .InstancePerRequest(); string @namespace = "Weee.Service"; var q = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && t.Namespace == @namespace select t; builder.RegisterTypes(q.ToArray()) .AsSelf() .InstancePerRequest(); builder.RegisterType() .SingleInstance(); builder.RegisterType() .SingleInstance(); //builder.RegisterType() //.As() //.InstancePerRequest(); //builder.RegisterType>() // .As>(); } } }