using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.Configuration; using System.Web.Mvc; using Autofac; using Autofac.Integration.Mvc; using GreenTree.Nachtragsmanagement.Core.Configuration; using GreenTree.Nachtragsmanagement.Core.Data; using GreenTree.Nachtragsmanagement.Data; using GreenTree.Nachtragsmanagement.Services.Configuration; using GreenTree.Nachtragsmanagement.Services.DbContext; using GreenTree.Nachtragsmanagement.Services.Site; using GreenTree.Nachtragsmanagement.Services.Test; using GreenTree.Nachtragsmanagement.Services.User; namespace GreenTree.Nachtragsmanagement.Web.Framework { public class ApplicationContext { #region Statics /// /// Current ApplicationContext /// private static ApplicationContext _current; /// /// Returns the current ApplicationContext or creates one if doesn't exist already /// public static ApplicationContext Current { get { if (_current == null) { _current = new ApplicationContext(); } return _current; } } #endregion #region Fields /// /// Returns the application wide app container builder /// private static IContainer _appContainer; #endregion #region Ctor /// /// Initializes a new instance of the ApplicationContext class /// public ApplicationContext() { } #endregion #region Initialization /// /// Registers all application ressources /// public static void InitApplication() { var builder = new ContainerBuilder(); var connection = WebConfigurationManager.ConnectionStrings["DefaultConnection"]; // Register object instances builder.RegisterInstance(new AppendixObjectContext(connection.ConnectionString)).As().SingleInstance(); // Register generic data repositorys builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)); // Register service types builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); // Register controllers builder.RegisterControllers(Assembly.GetCallingAssembly()); // Register modules builder.RegisterModule(new AutofacWebTypesModule()); _appContainer = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(_appContainer)); } #endregion } }