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