123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using Autofac;
- using Autofac.Integration.WebApi;
- using Central.Control.WebApi.Service.Interface;
- using IoC;
- using Microsoft.Extensions.Caching.Memory;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Web;
- using System.Web.Http;
- using IContainer = Autofac.IContainer;
- namespace Central.Control.WebApi.IOC
- {
- /// <summary>
- ///
- /// </summary>
- public class IOCService
- {
- private static IContainer _container;
- /// <summary>
- ///
- /// </summary>
- public static void InitAutofac()
- {
- #region AutoFac IOC容器
- var builder = new ContainerBuilder();
- try
- {
- //builder.RegisterControllers(Assembly.GetCallingAssembly()); //注册mvc控制器 需要引用package Autofac.Mvc
- //builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); //支持Api控制器属性注入
- builder.RegisterApiControllers(Assembly.GetCallingAssembly()); //注册所有api控制器 构造函数注入 需要引用package Autofac.WebApi
- //注册程序集
- #region Service
- var assemblysServices = Assembly.Load("Central.Control.WebApi");
- builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency();
- #endregion
- #region Repository
- //var assemblysRepository = Assembly.Load("WebApi.Repository");
- //builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency();
- #endregion
- //For<IDbContext>().Use(x => new Context());
- //builder.RegisterType<Context>()
- // .AsImplementedInterfaces()
- // .InstancePerLifetimeScope();
- _container = builder.Build(); //创建依赖注入
- //设置MVC依赖注入
- //DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));
- //设置WebApi依赖注入
- GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(_container);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message + "\n" + ex.InnerException);
- }
- #endregion
- }
- /// <summary>
- /// 从Autofac容器获取对象
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <returns></returns>
- public static T GetFromFac<T>()
- {
- return _container.Resolve<T>();
- }
- }
- }
|