WebActivatorEx—动态注册httpmodle
2017-05-03 15:41 huoit 阅读(1566) 评论(0) 编辑 收藏 举报源代码:https://github.com/davidebbo/WebActivator/tree/master/WebActivator
unity使用演示
WebActivator类库提供了3种功能,允许分别在Application_Start初始化之前,之后以及ShutDown的时候,分别执行指定的代码,并且允许多次指定。示例如下:
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(A.InitClass1), "PreStart")] [assembly: WebActivatorEx.PostApplicationStartMethod(typeof(A.PostClass1), "PostStart")] [assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(A.ShutDownClass1), "ShutDown")]
项目演示
using System.Linq; using System.Web.Mvc; using Microsoft.Practices.Unity.Mvc; [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TestPrj.Common.PreUnityActivator), "Start")] namespace TestPrj.Common { public static class PreUnityActivator { /// <summary>Integrates Unity when the application starts.</summary> public static void Start() { var container = UnityConfig.GetConfiguredContainer(); FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First()); FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container)); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); // if you want to use PerRequestLifetimeManager // Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule)); } } }
using System; using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; using TestPrj.DAL; using TestPrj.Modules; namespace TestPrj.Web { /// <summary> /// Main container. /// </summary> public class UnityConfig { private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() => { var container = new UnityContainer(); RegisterTypes(container); return container; }); public static IUnityContainer GetConfiguredContainer() { return container.Value; } public static void RegisterTypes(IUnityContainer container) { // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements. // container.LoadConfiguration(); // Register your types here container.RegisterType<IPreUnitOfWork, ETravelEntities>(new PerResolveLifetimeManager()); // Register services. container.RegisterType<IConfigService, ConfigService>(); } } }
1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/xmai/