C# 中AutoFac使用

1、NuGet 安装AutoFac : Install-Package AutoFac
2、介绍
//面向接口编程 当项目复杂时很有必要 模块耦合严重 基于接口编程
//IOC(Inversion of Control,控制反转)容器 使用IOC容器后,不再有程序员自己new对象 而由框架帮助new对象
3、使用

 //实现类中不要有成员变量  无状态  使用单例
            ContainerBuilder build = new ContainerBuilder();
            //把UserBll 注册为IUserBll的实现类
            //build.RegisterType<UserBll>().As<IUserBll>();
            //build.RegisterType<UserBll>().AsImplementedInterfaces();
            //build.RegisterType<DogBll>().AsImplementedInterfaces();

            Assembly assembly = Assembly.Load("MyBllImpl");

            //build.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
            //自动给接口的属性   赋值 SingleInstance 单例 InstancePerDependency 每次都创建一个新的对象   默认非SingleInstance
            build.RegisterAssemblyTypes(assembly).AsImplementedInterfaces().PropertiesAutowired();

            Autofac.IContainer iContainer  = build.Build();

            //创建实现类的对象
            IUserBll iUserBll =  iContainer.Resolve<IUserBll>();
            //如果有多个实现类 
            //IEnumerable<IUserBll> userBlls =  iContainer.Resolve<IEnumerable<IUserBll>>();
            //foreach (IUserBll item in userBlls)
            //{
            //    Console.WriteLine(item.GetType());
            //    item.AddNew("333","44");
            //}

            ISchool  s = iContainer.Resolve<ISchool>();
            s.Fangxue();
            //IDogBll DogBll = iContainer.Resolve<IDogBll>();
            //iUserBll.AddNew("张三", "123");
            //DogBll.Brak();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章