autofac如何注册静态方法里的接口对象
发布日期:2021-06-30 17:25:00
浏览次数:2
分类:技术文章
本文共 950 字,大约阅读时间需要 3 分钟。
标题可能是不准确的,因为我不知道如何描述。不知道的原因,是对依赖注入一知半解。
Autofac可以自动注册对象实例到接口,人所尽知。而在asp.net mvc中,这个实例化的工作,通常在每个控制器的构造函数里完成。
假如,我有些静态方法里,非要用到这些接口呢?怎么实例化它们?例如:
public static bool SetData(){ //这里需要用到实例化的某个对象,例如ILog}
你当然可以将这个对象作为参数传递进来,如
public static bool SetData(Ilog log)
问题是,有时候并不方便将这个实例化对象传进来,原因可能是这个静态方法很多地方都在使用,要传这个实例对象,需要改好多地方;并且每个调用方,都要在自己的构造函数里加入这个接口作为参数(不然咋注册?)
最好的办法就是在这个静态方法里注册或获得实例对象
public static bool SetData(){ //在这里获得实例化对象,如 ILog log = ....}
但如何获取这个实例对象呢?new一个的话,autofac的优势就荡然无存了。之所以使用autofac,使用IOC容器,就是为了面向接口编程。如果从设计阶段就写死对象的实例化类型,就不叫面向接口编程了。
那么,如何实例化?
可以酱紫:
public static bool SetData(){ //DependencyResolver是System.MVC里的对象 //下面这个表达式大意是,获得现行注册的对象类型,来实例化接口对象 //换言之,这是autofac的手动实例化方式 ILog log = DependencyResolver.Current.GetService();}
前提条件,是该实例化对象类型要在项目的初始化阶段注册,比如在ASP.NET MVC项目里的app_start事件里注册:
builder.RegisterType().As ().InstancePerLifetimeScope();
参考文章:
[Autofac怎么依赖注入ASP.NET MVC5类的静态方法] ()转载地址:https://leftfist.blog.csdn.net/article/details/50888948 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月20日 07时32分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【深度学习笔记】残差
2019-04-30
【python学习笔记】读取指定文件夹中的图片,结合边缘保留滤波EPF
2019-04-30
【工具和环境】Linux下安装pycharm
2019-04-30
【Accumulation】The definition of SISR
2019-04-30
【工具与环境】Windows下安装Sublime Text 3
2019-04-30
【工具与环境】Excel中批量插入行
2019-04-30
【个人实验注意事项】
2019-04-30
【学习笔记】对vanilla的一些个人理解
2019-04-30
【解决错误】The size of tensor a (8) must match the size of tensor b (64) at non-singleton dimension 1
2019-04-30
word文档中实现目录索引中标题加粗,前导符和页码不加粗
2019-04-30
“学硕” VS “专硕”
2019-04-30
【NLP学习笔记】知识图谱阅读笔记及其心得
2019-04-30
【工具使用】新版CSDN-markdown编辑器使用指南
2019-04-30
《知识图谱》阅读笔记(六)
2019-04-30