之前的文章讲了.Net core的依赖注入,在startup类中将服务注入到接口中,然后在要使用的地方通过构造函数注入就可以使用指定的服务了

像这样:

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

 

此时

1.如果我觉得构造函数麻烦,不想使用构造函数去使用服务呢?

2.如果有些地方不能使用构造函数注入呢?

本文就是讲解如何开发一个引擎,去解析我们要使用的服务,而不通过构造函数

Let's begin

 

1.引擎的原理:

我们在将服务注入进去之后,在想要使用的地方,如果不使用构造函数的话,可以这样使用

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

原理我们知道了,此时我们的引擎其实也就是将这个地方进行封装,然后通过传递泛型参数T,来决定是解析哪个服务类

 

1.定义引擎接口,提供解析方法

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

2.定义引擎实现类,实现引擎接口

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

 

到这里我们的功能是开发完毕了,但是该如何调用呢,我们在调用的时候需要将这个IServiceProvider传递过去,这个该如何做到呢

思路:在startup类中进行初始化引擎,然后将引擎保存起来,然后全局都可以使用

按照思路去开发:

1.定义一个引擎上下文类,来存储引擎

2.上下文中提供获取引擎的方法,共外部调用

3.提供初始化引擎方法,在startup类中初始化引擎

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

好了,我们的引擎接口,引擎服务类,引擎上下文都已经开发完毕,接下来就是在程序启动时初始化引擎就可以使用了,去startup文件

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

 

ok,开发完毕,我们来测试一下

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

测试结果:

开发.Net core引擎,通过引擎去使用依赖注入的服务,而不通过构造函数

成功!

Ending~

 

 

相关文章: