ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用
上一章主要介绍了autofac在mvc当中的具体应用,本章我们将继续简单的介绍下autofac在普通的webform当中的使用。
ps:值得一提的是目前我还不知道webform页面的构造函数要如何注入,以下在webform页面将主要采用属性注入的方式。
接下来我们正式进入主题,在上一章的基础上我们再添加一个web项目tianya.dotnetshare.webdemo,首先看我们的解决方案
本demo的web项目为asp.net web 应用程序(.net framework 4.5) 空web窗体,需要引用以下几个程序集:
1、tianya.dotnetshare.model 我们的实体层
2、tianya.dotnetshare.service 我们的服务层
3、tianya.dotnetshare.repository 我们的仓储层,正常我们的web项目是不应该使用仓储层的,此处我们引用是为了演示ioc依赖注入
4、autofac 依赖注入基础组件
5、autofac.web 依赖注入web的辅助组件
其中autofac和autofac.web可以从我们的nuget上引用,依次点击下载以下2个组件:
打开我们的global.asax文件进行注入工作,需要实现icontainerprovideraccessor接口:
using system; using system.collections.generic; using system.io; using system.linq; using system.reflection; using system.web; using system.web.security; using system.web.sessionstate; using autofac; using autofac.integration.web; using tianya.dotnetshare.model; namespace tianya.dotnetshare.webdemo { public class global : system.web.httpapplication, icontainerprovideraccessor { /// <summary> /// 依赖注入containerprovider /// </summary> static icontainerprovider _containerprovider; /// <summary> /// 实现icontainerprovideraccessor接口 /// </summary> public icontainerprovider containerprovider { get { return _containerprovider; } } protected void application_start(object sender, eventargs e) { autofacregister(); //autofac依赖注入 } /// <summary> /// autofac依赖注入 /// </summary> private void autofacregister() { var builder = new containerbuilder(); //一次性注册所有实现了idependency接口的类 type basetype = typeof(idependency); assembly[] assemblies = directory.getfiles(appdomain.currentdomain.relativesearchpath, "*.dll").select(assembly.loadfrom).toarray(); builder.registerassemblytypes(assemblies) .where(type => basetype.isassignablefrom(type) && !type.isabstract) .asself().asimplementedinterfaces() .propertiesautowired().instanceperlifetimescope(); //设置依赖解析器 _containerprovider = new containerprovider(builder.build()); } } }
接着需要配置一下我们的web.config,添加以下节点:
<configuration> <!--autofac依赖注入--> <system.webserver> <modules> <!-- this module handles disposal of the request lifetime scope. --> <add name="containerdisposal" type="autofac.integration.web.containerdisposalmodule, autofac.integration.web" precondition="managedhandler" /> <!-- this module injects properties on web forms. you could also use the unsetpropertyinjectionmodule or a custom module. --> <add name="propertyinjection" type="autofac.integration.web.forms.propertyinjectionmodule, autofac.integration.web" precondition="managedhandler" /> </modules> </system.webserver> </configuration>
最后来看下我们webform页面
using system; using tianya.dotnetshare.service; using tianya.dotnetshare.repository; using tianya.dotnetshare.repository.impl; namespace tianya.dotnetshare.webdemo { public partial class index : system.web.ui.page { /// <summary> /// 定义仓储层学生实现类对象 /// </summary> public studentrepository sturepositoryimpl { get; set; } /// <summary> /// 定义仓储层学生抽象类对象 /// </summary> public istudentrepository sturepository { get; set; } /// <summary> /// 通过属性注入,访问修饰符必须为public,否则会注入失败 /// </summary> public istudentservice stuservice { get; set; } /// <summary> /// 页面加载 /// </summary> /// <param name="sender">引发事件的源</param> /// <param name="e">处理事件所需的参数</param> protected void page_load(object sender, eventargs e) { var stu1 = sturepository.getstuinfo("10000"); var stu2 = stuservice.getstuinfo("10001"); var stu3 = sturepositoryimpl.getstuinfo("10002"); string msg = $"学号:10000,姓名:{stu1.name},性别:{stu1.sex},年龄:{stu1.age}<br />"; msg += $"学号:10001,姓名:{stu2.name},性别:{stu2.sex},年龄:{stu2.age}<br />"; msg += $"学号:10002,姓名:{stu3.name},性别:{stu3.sex},年龄:{stu3.age}"; response.write(msg); } } }
至此,完成处理,接下来就是见证奇迹的时刻了,我们访问一下 /index.aspx,看看是否能返回学生信息
可以发现,返回了学生的信息,说明我们注入成功了。
至此,我们的asp.net mvc ioc依赖注入之autofac系列就全部介绍完了,如果你觉得这篇文章对你有所帮助请记得点赞哦,谢谢!!!
demo源码:
链接:https://pan.baidu.com/s/1hcq3soe8lzhso3it-x9aqw 提取码:586l
参考博文:https://www.cnblogs.com/fei686868/p/11001873.html
版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!!
上一篇: 一文掌握 Spring Boot Profiles
下一篇: 芒果很好吃,吃芒果嘴肿怎么办
推荐阅读
-
ASP.NET MVC IOC依赖注入之Autofac系列(一)
-
ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
-
ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)
-
ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用
-
ASP.NET MVC IOC依赖注入之Autofac系列开篇
-
ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)
-
ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)
-
ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
-
ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用