EnVisageOnline/Main/Source/EnVisage/App_Start/AutofacConfig.cs

90 lines
2.8 KiB
C#

using System.Reflection;
using System.Web.Http;
using Autofac;
using Autofac.Extras.NLog;
using Autofac.Integration.Mvc;
using Prevu.Core.Workflow;
using Prevu.DAL.Main.Accessors;
using Prevu.DAL.Main;
using Prevu.DAL.Data.Main;
using EnVisage;
using EnVisage.Code.BLL;
using System.Web.Mvc;
using EnVisage.Code.Cache;
using Prevu.Core.Cache;
using Prevu.Core.Main;
using CacheManager = Prevu.Core.Cache.CacheManager;
namespace Prevu
{
public static class AutofacConfig
{
public static void Configure(HttpConfiguration config)
{
var builder = new ContainerBuilder();
// Register your Web API controllers.
builder.RegisterControllers(Assembly.GetExecutingAssembly());
// OPTIONAL: Register the Autofac filter provider.
builder.RegisterFilterProvider();
#region NLog
builder.RegisterModule<SimpleNLogModule>();
#endregion
#region Db Context
builder.RegisterType<PrevuDbContext>().As<PrevuDbContext>().InstancePerRequest();
builder.RegisterType<EnVisageEntities>().As<EnVisageEntities>().InstancePerRequest();
#endregion
#region DAL Accessors
builder.RegisterType<WorkflowProcessTransitionHistoryAccessor>().As<IWorkflowProcessTransitionHistoryAccessor>();
builder.RegisterType<ScenarioAccessor>().As<IScenarioAccessor>();
builder.RegisterType<UserAccessor>().As<IUserAccessor>();
//builder.RegisterType<UserQuickLinkAccessor>().As<IUserQuickLinkAccessor>();
#endregion
#region Core classes
builder.RegisterType<MainUnit>().As<IMainUnit>();
builder.RegisterType<WorkflowManager>().As<IWorkflowManager>();
builder.RegisterType<UserManager>().As<IUserManager>();
builder.RegisterType<CacheManager>().As<ICacheManager>().SingleInstance();
#endregion
#region Envisage managers
builder.RegisterType<ScenarioManager>().As<ScenarioManager>();
builder.RegisterType<ProjectManager>().As<ProjectManager>();
builder.RegisterType<ApplicationUserManager>().As<ApplicationUserManager>();
#endregion
#region Prevu UI Managers
builder.RegisterType<ScenarioUIManager>().As<ScenarioUIManager>();
#endregion
#region Envisage classes
builder.RegisterType<UsersCache>().As<UsersCache>().SingleInstance();
#endregion
builder.RegisterControllers(typeof(MvcApplication).Assembly);
// Set the dependency resolver to be Autofac.
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
}