摘要: # async/await 源码解析 这篇文章主要是分析 async/await 这个语法糖,分析一下 async 和 await 是如何做到异步的。首先,我先抛出两个问题,各位可以先想一下。 1. await 之后的方法是何时执行,如何执行的? 2. 为什么 await 之后的代码会在不同的线程执 阅读全文
posted @ 2023-08-16 21:06 zydxpc 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 上一节聊了一下 `CallSite` 是怎样生成的,这一节我们来看一下 `CallSite` 是如何使用的。 ## 入口 先让我们来回顾一下 `CreateServiceAccessor` 这个方法。 ``` C# private Func CreateServiceAccessor(Type se 阅读全文
posted @ 2023-07-24 23:51 zydxpc 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 接着上面一节,这一节主要来看看 callSite 是如何生成的 `CallSite` 是通过 `CallSiteFactory.GetCallSite(Type serviceType, CallSiteChain callSiteChain)`生成的,`CallSiteFactory` 是在 `S 阅读全文
posted @ 2023-06-28 21:22 zydxpc 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 使用IOC容器最重要的两个步骤就是注入服务和从容器内获取服务实例。上一节聊的ServiceDescriptor其实就可以看成注入服务的步骤,这一节初步聊一聊获取服务实例的相关源码。 1. GetService GetService 方法是获取服务实例的入口,位于 ServiceProvider 这个 阅读全文
posted @ 2023-06-21 23:16 zydxpc 阅读(499) 评论(0) 推荐(0) 编辑
摘要: IOC 容器内保存的程序运行过程中使用的服务实例。那么如果有些服务实例需要在运行时动态生成,比如,数据库连接,不可能在程序运行过程中所有线程共用一条数据库连接。所以 IOC 容器内保存的不是具体的服务实例,而是服务的相关信息,使用这个信息可以在程序运行时动态的生成服务实例,这些信息就保存在 Serv 阅读全文
posted @ 2023-06-02 22:04 zydxpc 阅读(389) 评论(0) 推荐(0) 编辑