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

  • 相关阅读:
    第十六周项目5-为动态数组扩容
    Remoting
    C# 调用https服务
    12306
    Byte[]和Stream相互转换
    SQL Server之数据库语句优化
    前端框架VUE学习
    Oracle连接字符串总结
    .net 操作Oracle 海量数据
    新建一个Windows Service的方法
  • 原文地址:https://www.cnblogs.com/chucklu/p/6495160.html
Copyright © 2011-2022 走看看