PM> Install-Package Autofac Install Autofac yourselfPM> Install-Package Autofac.Mvc3 And additions to Mvc3 protected void Application_Start() { Trace.TraceInformation("Website initialization started"); AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); // Setup IoC container var builder = new ContainerBuilder(); builder.RegisterModule(new ServicesModule()); builder.Register(c => new Entities()).As<IEntities>() .OnActivated(e => { var config = DependencyResolver.Current.GetService<IGlobalSettings>(); e.Instance.RawConnectionString = config.Data.SqlServerConnectionString; }).InstancePerHttpRequest(); builder.RegisterType<LocalizationContext>().PropertiesAutowired().InstancePerHttpRequest(); builder.Register(c => new DefaultGlobalSettings()).As<IGlobalSettings>().SingleInstance(); builder.RegisterGeneric(typeof(MongoRepository<>)) .As(typeof(IMongoRepository<>)).InstancePerHttpRequest(); builder.Register(c => EnvironmentContext()).As<IEnvironmentContext>().InstancePerHttpRequest(); builder.RegisterModule(new AutofacWebTypesModule()); builder.RegisterSource(new ViewRegistrationSource()); builder.RegisterModelBinders(Assembly.GetExecutingAssembly()); builder.RegisterModelBinderProvider(); builder.RegisterFilterProvider(); IContainer container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); Trace.TraceInformation("Website has been successfully initialized"); } builder.RegisterModule(new ServicesModule()); builder.Register(c => EnvironmentContext()).As<IEnvironmentContext>().InstancePerHttpRequest() builder.Register(c => new Entities()).As<IEntities>() .OnActivated(e => { var config = DependencyResolver.Current.GetService<IGlobalSettings>(); e.Instance.RawConnectionString = config.Data.SqlServerConnectionString; }).InstancePerHttpRequest(); builder.Register(c => new DefaultGlobalSettings()).As<IGlobalSettings>().InstancePerHttpRequest(); builder.RegisterGeneric(typeof(MongoRepository<>)) .As(typeof(IMongoRepository<>)).InstancePerHttpRequest(); builder.RegisterType<LocalizationContext>().PropertiesAutowired().InstancePerHttpRequest(); builder.Register(c => new LocalizationContext { GlobalSettings = c.Resolve<IGlobalSettings>() }); builder.RegisterModule(new AutofacWebTypesModule()); builder.RegisterModelBinders(Assembly.GetExecutingAssembly()); builder.RegisterModelBinderProvider(); builder.RegisterFilterProvider(); builder.RegisterSource(new ViewRegistrationSource()); using (var lifetime = container.BeginLifetimeScope()) { var component = lifetime.Resolve<SomeComponent>(); // component, and any of its disposable dependencies, will // be disposed of when the using block completes } IContainer container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); Source: https://habr.com/ru/post/136895/
All Articles