using System; using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; using System.Configuration; using Microsoft.Practices.Unity.WebApi; using System.Web.Http; using Microsoft.Web.Infrastructure.DynamicModuleHelper; using Microsoft.Practices.Unity.Mvc; using MyCode.Project.Repositories; using Microsoft.Practices.Unity.InterceptionExtension; using MyCode.Project.Infrastructure.UnityExtensions; using MyCode.Project.Repositories.Common; using MyCode.Project.Infrastructure.Cache; using MyCode.Project.Domain.Config; using MyCode.Project.WebApi.Areas.Admin.Controllers; using MyCode.Project.OutSideService.Implementation; using MyCode.Project.Infrastructure.Common; namespace MyCode.Project.WebApi { /// /// Specifies the Unity configuration for the main container. /// public class UnityConfig { #region Unity Container //private static Lazy container = new Lazy(() => //{ // var container = new UnityContainer(); // RegisterTypes(container); // return container; //}); public static IUnityContainer Container = GetConfiguredContainer(); /// /// Gets the configured Unity container. /// public static IUnityContainer GetConfiguredContainer() { return GetContainer(); } #endregion /// Registers the type mappings with the Unity container. /// The unity container to configure. /// There is no need to register concrete types such as controllers or API controllers (unless you want to /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered. public static IUnityContainer GetContainer() { var container = UnityHelper.GetUnityContainer(); //数据库库链接对象为按每一次请求 container.RegisterType(new PerRequestLifetimeManager()); new DingDingHelper(SystemConfig.DingDingApiUrl, SystemConfig.DingDingTxt); //注册缓存对象 //container.RegisterType(new InjectionConstructor(SystemConfig.RedisAddress, SystemConfig.CachePrefix)); container.RegisterType(); return container; } } }