摘要
Autofac的案例都是通过构造方法获取的。还有一种方法是通过构造方法传递给IServiceProvider获取。这种方式可以大大简化构造方法。
正文
这篇文章内容接前一篇,提议能够 首先看前一篇文章,再看文中,会出现更强的实际效果。
前一篇自动跳转连接:https://www.cnblogs.com/weskynet/p/15046999.html
文章正文:
Autofac根据构造方法引入
如前一篇所显示,获得案例全是根据构造方法开展。这里根据构造方法获得案例,也有一种根据构造方法传到IServiceProvider开展获得。该方式能够 巨大降低构造方法传到的案例过多家造成的结构函数调用松垮。实例立即应用前篇新项目做扩展,在控制板的检测api下边,立即应用。相关实例如下图所显示:
设定中断点,并运作程序流程查询实际效果。由此可见IWeskyTest插口早已被引入进去,而且能够 浏览到
Autofac根据特性引入方法
在ServiceA完成类里边,加上IServiceB、IServiceC的特性。而且在ServiceA完成类里边,加上一个测试标准 Hey(),在里面对之上2个特性所相匹配的插口方式开展启用。编码以下:
及其Hey必须 添加到内部类插口IServiceA:
对IServiceA\B\C开展服务项目申请注册。在其中,给予特性的服务项目,申请注册情况下务必应用PropertiesAutowired方法,如下边编码所显示:
然后改变控制板里边的Test方式开展检测。相匹配编码及其表述和相匹配的运作結果如下图所显示:
Autofac根据方式引入方法
改变上边ServiceA的类为以下编码。相关编码表明如图所示:
对采用的IServiceA和B开展服务项目申请注册。如下图所示,ServiceA里边给予了方式引入,因此必须 在申请注册A服务项目的情况下,应用OnActivated方式。在其中,RegisterService是ServiceA服务项目里边给予的必须 作为方式引入的方式,方式里边的IServiceB是必须 被方式引入的内部类(插口)。下列应用了瞬间,还可以应用别的的,沒有限定,包含ServiceB服务项目申请注册情况下,还可以应用非单例模式,不做限定。
运作程序流程,假如依次打印出ServiceA 和 ServiceB,则意味着方式引入取得成功。运作程序流程結果以下:
Filter过滤装置里边完成适用依赖注入
先撰写一个过滤装置WeskyFilter,承继自 ActionFilterAttribute。而且在里面加上一个特性引入的IServiceC和一个构造方法引入的IServiceD。
随后在OnActionExecuting和OnActionExecuted方式下边完成一个打印出的內容,而且各自打印出ServiceC案例和ServiceD案例下边的Hello方式。编码以下:
对IServiceC、D开展服务项目申请注册,及其申请注册WeskyFilter过滤装置,用于适用依赖注入:
在控制板里边的Test方式上边,加上过滤装置标识,并立即运作开展結果认证:
如下图所示,打印出出过滤装置里边的內容,而且取得成功浏览到ServiceC和D的Hello方式,意味着在过滤装置里边完成依赖注入也是能够 的。
之上便是这篇文章内容的所有内容,谢谢观赏。
群号码:1079830632
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0