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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章