asp.net core源码飘香:Options组件

时间:2021-09-09 03:49:44

简介:

Options组件是一个小组件,但用的地方很多。它本质是将一个POCO类注册到容器中(主要在Startup中作为其他组件的配置功能提供),后续使用的时候就可以通过比如构造函数注入等获取到POCO对象。如果只是为了注入一个POCO对象,那Options组件太多余了。关键在于:它能将这个POCO类关联到上一遍讲的Configuration组件的配置源,甚至在可以在配置源发生改变时(配置源启用了Reload)自动更新被关联的POCO对象。

(另外:它默认通过Action<T>去配置要注册的POCO对象,后面的配置会覆盖前面的配置)

上源码:

(使用方法去官网了解下即可,我要说的是实现原理)

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

上面是传入Action<T>来配置并注入POCO对象的过程,下面我们来分析怎样绑定到上一篇所讲的IConfiguration对象。

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

至此,我们已经了解了直接通过Action<T>配置POCO类和通过IConfiguration对象绑定POCO类来注入一个POCO类的方法了。但还有一点:

当IConfiguration对象Reload的时候,POCO类怎样实时更新属性呢?

asp.net core源码飘香:Options组件

asp.net core源码飘香:Options组件

上面两个图所圈出来的对象就是为了做实时更新的,想知道它的具体实现手法吗?

篇幅所限,这里就不细说了。有兴趣的欢迎加群(294525042)咨询。