zoukankan      html  css  js  c++  java
  • Ioc

    #region Assembly Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    // F:CodeFor91BMYUN20WebAPPSourcepackagesUnity.2.0lib20Microsoft.Practices.Unity.dll
    #endregion


    using Microsoft.Practices.Unity;
    using Microsoft.Practices.Unity.Configuration;

    /// <summary>
        /// 注入和反转 
        /// 单例
        /// </summary>
        public class Ioc
        {
            private readonly IUnityContainer _unityContainer;
            private static Hashtable objCache = new Hashtable();
    
            private static Ioc _instance;
            public static Ioc Instance
            {
                get { return _instance ?? (_instance = new Ioc()); }
            }
    
            private Ioc()
            {
                _unityContainer = new UnityContainer();
                try
                {
                    UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                    section.Configure(_unityContainer);
                }
                catch(Exception)
                {
                }
            }
    
            /// <summary>
            /// 单例获取
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <returns></returns>
            public T GetService<T>()
            {
                string key = typeof(T).ToString();
    
                if(objCache.ContainsKey(key))
                {
                    return (T)objCache[key];
                }
                else
                {
                    T tmp = _unityContainer.Resolve<T>();
                    objCache[key] = tmp;
                    return tmp;
                }
            }
    
            public object GetService(Type serviceType)
            {
                return _unityContainer.Resolve(serviceType);
            }
        }

    ps:

    T不能是单例类

  • 相关阅读:
    在二元树中查找和为某一值的所有路径
    求整数的二进制表示1的个数
    Javascript AJAX 解析XML 兼容FIREFOX/IE
    DOM解析XML笔记
    Linux c 共享内存
    C Socket 发送/接收数据结构
    Linux c 获取系统内存
    7.5备忘
    linux c 唤醒进程 获取子进程结束状态
    7.1-7.2备忘
  • 原文地址:https://www.cnblogs.com/chucklu/p/6495160.html
Copyright © 2011-2022 走看看