基于微软Unity的IoC容器(DI)实现

来源:互联网 发布:苹果下歌用什么软件 编辑:程序博客网 时间:2024/05/18 02:43
using System;using System.Linq;using Microsoft.Practices.Unity;namespace Container{    public sealed class IoCContainer    {        /// <summary>        /// Singleton模式        /// </summary>        private readonly static IUnityContainer Container = new UnityContainer();        /// <summary>        /// 注册一个类        /// </summary>        /// <typeparam name="T"></typeparam>        public static void RegisterType<T>()            where T : class        {            Container.RegisterType<T>();        }        /// <summary>        /// 注册一个类        /// </summary>        /// <typeparam name="T">类</typeparam>        /// <param name="name">依赖关系的名称,根据这个名称可以获取到实例类,区分大小写</param>        public static void RegisterType<T>(string name)            where T : class        {            Container.RegisterType<T>(name);        }        /// <summary>        /// 注册一个接口(类)和实现类的关系        /// </summary>        /// <typeparam name="TFrom">接口或者类</typeparam>        /// <typeparam name="TTo">实现或继承了TFrom的类</typeparam>        public static void RegisterType<TFrom, TTo>()            where TTo : class, TFrom            where TFrom : class        {            Container.RegisterType<TFrom, TTo>();        }        /// <summary>        /// 注册一个接口(类)和实现类的关系        /// </summary>        /// <typeparam name="TFrom">接口或者类</typeparam>        /// <typeparam name="TTo">实现TFrom接口,或者继承TFrom类的子类</typeparam>        /// <param name="name">依赖关系的名称,根据这个名称可以获取到实例类,区分大小写</param>        public static void RegisterType<TFrom, TTo>(string name)            where TTo : class, TFrom            where TFrom : class        {            Container.RegisterType<TFrom, TTo>(name);        }        /// <summary>        ///  获取指定类型的接口或类的实例        /// </summary>        /// <typeparam name="T">类或者接口</typeparam>        /// <returns></returns>        public static T Resolve<T>()            where T : class        {            return Container.Resolve<T>();        }        /// <summary>        /// 根据依赖关系名称获取指定类型的接口或类的实例        /// </summary>        /// <typeparam name="T">接口,或者类</typeparam>        /// <param name="name">依赖关系的名称,区分大小写</param>        /// <returns>/returns>        public static T Resolve<T>(string name)            where T : class        {            return Container.Resolve<T>(name);        }    }}

0 0