zoukankan      html  css  js  c++  java
  • WebActivatorEx 注入时的使用

    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")]
    View Code

    下面提供一个项目中的使用示例:

    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));
            }
        }
    }
    View Code
    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>();
            }
        }
    }
    View Code
  • 相关阅读:
    互联网中的公钥与私钥
    Apache的order、allow、deny
    Linux进程中TIME_OUT解析
    no xxx find in java.library.path
    检测 USB 设备拨插的 C# 类库:USBClassLibrary
    C# 实现的异步 Socket 服务器
    javascript制作公式编辑器,函数编辑器和图形绘制
    浏览器内部工作原理
    10 款基于 jQuery 的切换效果插件推荐
    DIV焦点事件详解 --【focus和tabIndex】​
  • 原文地址:https://www.cnblogs.com/windy2008/p/5445877.html
Copyright © 2011-2022 走看看