工厂类Container
-
public class Container { /// <summary> /// IOC 容器 /// </summary> public static IContainer container = null; /// <summary> /// 获取 IDal 的实例化对象 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static T Resolve<T>() { try { if (container == null) { Initialise(); } } catch (System.Exception ex) { throw new System.Exception("IOC实例化出错!" + ex.Message); } return container.Resolve<T>(); } /// <summary> /// 初始化 /// </summary> public static void Initialise() { var builder = new ContainerBuilder(); //格式:builder.RegisterType<这里填类型>().As<这里填接口>().InstancePerLifetimeScope(); container = builder.Build(); } }
比如AdminDAL继承自接口IAdminDAL,只需要在初始化方法里加入builder.RegisterType(AdminDAL).As(IAdminDAL).InstancePerLifetimeScope();然后调用Container.Resolve<IAdminDAL>();就可以得到实体,然后使用,大大降低了耦合性
需要在NuGet程序包里下载Autofac.dll
个人博客地址