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
  • 相关阅读:
    为ccflow增加禁用用户立刻生效功能
    关于工作流引擎授权问题的需求变更
    sql server 2005 安装过程中出现错误Insatalling performance countter: Cannot create a file when that file already exists.
    web.config中错误
    三个SQL视图查出所有SQL Server数据库字典
    恢复备份的数据库
    sql语句读取excel数据
    It is an error to use a section registered allowDefinition='MachineToApplication' beyond application level. 错误
    DOS命令实现创建文件夹
    如何查看sql server 的版本(网摘)
  • 原文地址:https://www.cnblogs.com/windy2008/p/5445877.html
Copyright © 2011-2022 走看看