UnityIocHelper 帮助类

本文介绍了一个基于Unity IoC容器实现的服务定位器模式的C#类,该类提供静态方法来获取注册的服务实例,并展示了如何通过传入连接字符串和数据库类型来创建数据库服务。
    public class UnityIocHelper : IServiceProvider  
    {  
        private readonly IUnityContainer _container;  

        private static readonly UnityIocHelper dbinstance = new UnityIocHelper("DBcontainer");  

        private UnityIocHelper(string containerName)  
        {  
            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");  
            _container = new UnityContainer();  
            section.Configure(_container, containerName);  
            //section.Configure(_container);  
        }  

        public static string GetmapToByName(string containerName,string itype, string name = "")  
        {  
            try  
            {  
                UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");  
                var _Containers = section.Containers;  
                foreach (var _Container in _Containers)  
                {  
                    if (_Container.Name == containerName)  
                    {  
                        var _Registrations = _Container.Registrations;  
                        foreach (var _Registration in _Registrations)  
                        {  
                            if (name == "" && string.IsNullOrEmpty(_Registration.Name) && _Registration.TypeName == itype)  
                            {  
                                return _Registration.MapToName;  
                            }  
                        }  
                        break;  
                    }  
                }  
                return "";  
            }  
            catch  
            {  
                throw;  
            }  

        }  

        public static UnityIocHelper DBInstance  
        {  
            get { return dbinstance; }  
        }  

        public object GetService(Type serviceType)  
        {  
            return _container.Resolve(serviceType);  
        }  
        public T GetService<T>()  
        {  
            return _container.Resolve<T>();  
        }  
        public T GetService<T>(params ParameterOverride[] obj)  
        {  
            return _container.Resolve<T>(obj);  
        }  
        public T GetService<T>(string name, params ParameterOverride[] obj)  
        {  
            return _container.Resolve<T>(name,obj);  
        }   
    }  

调用方法:

            /// <summary>  
            /// 连接数据库  
            /// </summary>  
            /// <param name="connString">连接字符串</param>  
            /// <param name="DbType">数据库类型</param>  
            /// <returns></returns>  
            public static IDatabase Base(string connString, DatabaseType DbType)  
            {  
                DbHelper.DbType = DbType;  
                return UnityIocHelper.DBInstance.GetService<IDatabase>(new ParameterOverride(  
                  "connString", connString), new ParameterOverride(  
                  "DbType", DbType.ToString()));  
            }  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值