IOC容器<AutoFac>(.net framework)
IOC容器
---官方名:AutoFac
---自动实现控制反转,不需要借助工厂
---.net framework 不自带IOC容器<AutoFac> 需要自己引入
背景:
在使用工厂模式的情况下,当多个DAL时,就需要编写多个工厂一一照应(麻烦),所以借助AutoFac实现自动控制反转
--参考代码笔记《专高六CMS--IOC容器(Autofac)《.net framework 》--案例运用.net framework MVC通过访问SqlServer和MySQL两种数据库完成对Autofac的剖解》
代码实现:



1、和“简单工厂”模式一样,首先定义个接口 --实现bll与dal解耦,实现依赖倒置
1-1、DAL各个实现类继承接口并实现具体功能
(可以有该商品多种型号---类似多个类继承同样一个接口 )
《更普通解释:不同样式的鼠标插同一个USB接口》
--继承接口这一操作就是官方概念的“依赖倒置”
(面向接口编程 上层模块不依赖于下层模块,而依赖于抽象)

---继承同一接口,两个dal
1-2、BLL层构造注入

1-3、控制器

//当前直接运行报错

1-4、解决:--因为没有注册 --Global.asax通过使用autofac注入(因为framework没有ioc容器--所以需要借助autofac-他就类似个ioc容器--core自带ioc容器-但是也可以不用自带的也用autofac)
①控制器安装Autofac包 +

②Global.asax通过使用autofac注入
安装(安装)Autofac.MVC5 5.0.0
public class MvcApplication : System.Web.HttpApplication { private static IContainer _container; public static IContainer Container { get { return _container; } } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //需要从Nuget里面引入(安装)Autofac.MVC5 5.0.0 #region Autofac开始 //通过 ContainerBuiler 的 Build 方法,得到 IContainer 容器 ContainerBuilder builder = new ContainerBuilder(); //配置接口与实现的映射 //选择IOCdata的配置 --普通类 接口类 builder.RegisterType<IOCdata>().As<IIOCdata>(); //选择IOCdata2的配置 --普通类 接口类 //builder.RegisterType<IOCdata2>().As<IIOCdata>(); //注册BLL builder.RegisterType<IOCservice>(); //UI层名称 --运用了反射知识 Assembly webSystem = Assembly.Load("FrameWorkIOC"); //由autofac来接管mvc 创建Controller builder.RegisterControllers(webSystem).PropertiesAutowired(); //把autofac的容器赋值给_container _container = builder.Build(); //加载容器 DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); #endregion } }
④运行出现问题


---解决------放进viewbag中
成功

--用法:--这里切换就好了--比如用sqlserver库还是mysql库


本文来自博客园,作者:じ逐梦,转载请注明原文链接:https://www.cnblogs.com/ZhuMeng-Chao/p/16182843.html

浙公网安备 33010602011771号