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;
}
}
}