using Autofac;
|
using Autofac.Integration.Mvc;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Web;
|
using System.Web.Mvc;
|
using System.Web.Optimization;
|
using System.Web.Routing;
|
|
namespace FineAdmin.Web
|
{
|
public class MvcApplication : System.Web.HttpApplication
|
{
|
protected void Application_Start()
|
{
|
RemoveWebFormEngines();
|
|
AreaRegistration.RegisterAllAreas();
|
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
|
//´´½¨autofac¹ÜÀí×¢²áÀàµÄÈÝÆ÷ʵÀý
|
var builder = new ContainerBuilder();
|
SetupResolveRules(builder);
|
//ʹÓÃAutofacÌṩµÄRegisterControllersÀ©Õ¹·½·¨À´¶Ô³ÌÐò¼¯ÖÐËùÓеÄControllerÒ»´ÎÐÔµÄÍê³É×¢²á Ö§³ÖÊôÐÔ×¢Èë
|
builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
|
|
// °ÑÈÝÆ÷×°È뵽΢ÈíĬÈϵÄÒÀÀµ×¢ÈëÈÝÆ÷ÖÐ
|
var container = builder.Build();
|
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
|
}
|
|
private static void SetupResolveRules(ContainerBuilder builder)
|
{
|
//WebAPIÖ»ÓÃÒýÓÃservicesºÍrepositoryµÄ½Ó¿Ú£¬²»ÓÃÒýÓÃʵÏÖµÄdll¡£
|
//ÈçÐè¼ÓÔØÊµÏֵijÌÐò¼¯£¬½«dll¿½±´µ½binĿ¼Ï¼´¿É£¬²»ÓÃÒýÓÃdll
|
var iServices = Assembly.Load("FineAdmin.IService");
|
var services = Assembly.Load("FineAdmin.Service");
|
var iRepository = Assembly.Load("FineAdmin.IRepository");
|
var repository = Assembly.Load("FineAdmin.Repository");
|
|
//¸ù¾ÝÃû³ÆÔ¼¶¨£¨·þÎñ²ãµÄ½Ó¿ÚºÍʵÏÖ¾ùÒÔServices½á⣩£¬ÊµÏÖ·þÎñ½Ó¿ÚºÍ·þÎñʵÏÖµÄÒÀÀµ
|
builder.RegisterAssemblyTypes(iServices, services)
|
.Where(t => t.Name.EndsWith("Service"))
|
.AsImplementedInterfaces().PropertiesAutowired();
|
|
//¸ù¾ÝÃû³ÆÔ¼¶¨£¨Êý¾Ý·ÃÎʲãµÄ½Ó¿ÚºÍʵÏÖ¾ùÒÔRepository½á⣩£¬ÊµÏÖÊý¾Ý·ÃÎʽӿںÍÊý¾Ý·ÃÎÊʵÏÖµÄÒÀÀµ
|
builder.RegisterAssemblyTypes(iRepository, repository)
|
.Where(t => t.Name.EndsWith("Repository"))
|
.AsImplementedInterfaces().PropertiesAutowired();
|
}
|
|
/// <summary>
|
/// ÒÆ³ýwebformÊÔͼÒýÇæ
|
/// </summary>
|
void RemoveWebFormEngines()
|
{
|
var viewEngines = ViewEngines.Engines;
|
var webFormEngines = viewEngines.OfType<WebFormViewEngine>().FirstOrDefault();
|
if (webFormEngines != null)
|
{
|
viewEngines.Remove(webFormEngines);
|
}
|
}
|
|
}
|
}
|