Console app 里的依赖注入及其实例生命周期

前端之家收集整理的这篇文章主要介绍了Console app 里的依赖注入及其实例生命周期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

依赖注入是 ASP.NET Core 里的核心概念之一,我们平常总是愉快地在Startup类的ConfigureServices方法里往IServiceCollection注册各种类型,以致有一些同学可能误以为依赖注入是只有 ASP.NET Core 才有的特性。但实际上依赖注入也可以用于 .NET Core 的 Console app. 别忘了, ASP.NET Core 的应用本质上也只是一个 Console app而已。今天我们在Console app里试试依赖注入。

我们的目标是创建一个Console app,在其中引入依赖注入,注册不同生命周期的类型,然后创建几个线程,每个线程分别依靠依赖注入“创建”若干类型实例,然后观察不同生命周期下这些实例变量是否指向一个实例还是各不相同。

ServiceCollection

现在闭上眼睛想象一下(别睡着了),我们自己就是依赖注入的执行者,如果有一个漂亮的程序媛跟我们说她要某某类型的一个实例,我们应该怎么做?我们首先需要知道这某某类型是个什么东西以及如何创建对吧?我们如何知道呢?当然是她得提前告诉我们啊,而我们要有个地方把这些信息保留下来然后在需要的时候可以查阅。在 .NET Core里,可以依赖注入的类型叫Service,而记录这些Service信息的这地方就是ServiceCollection

所以,当程序运行起来之后,我们第一件事情就是创建一个ServiceCollection,怎么创建呢? new

// using Microsoft.Extensions.DependencyInjection
ServiceCollection services = new ServiceCollection();

听起来高大上的ServiceCollection,其创建竟然如此简单。

猜你在找的设计模式相关文章