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不能是单例类

  • 相关阅读:
    SQL Server中删除表中重复数据
    [Everyday Mathematics]20150121
    [Everyday Mathematics]20150120
    [Everyday Mathematics]20150119
    [Everyday Mathematics]20150118
    [Everyday Mathematics]20150117
    Hilbert先生旅馆的故事
    调和级数发散的简短证明
    [Everyday Mathematics]20150116
    [Everyday Mathematics]20150115
  • 原文地址:https://www.cnblogs.com/chucklu/p/6495160.html
Copyright © 2011-2022 走看看