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();