依赖注入瞬态类B内部变更后,类A中B实例的变化是否同步?
瞬态依赖B的状态变更是否会在A的实例中体现?
答案是会体现,具体原因如下:
瞬态注册的核心逻辑:瞬态意味着每次从DI容器请求B类型实例时,容器都会生成一个全新的实例。但对于类A而言,它仅在自身实例化时通过构造函数请求一次B实例——这个实例会被A的
bObj字段持续持有,只要A的实例还存在,它就始终指向同一个B对象。结合你的代码场景分析:
- 当A被DI容器创建时,容器会生成一个B实例注入到A的构造函数,此时A的
bObj就指向这个特定的B实例。 - 当该B实例通过事件触发调用
RecreateStorageClient方法,其内部的sClient字段会被重新初始化(完成状态变更)。 - 后续A调用
SomeMethod时,通过bObj.GetStorageLayerClient()获取到的必然是更新后的sClient,因为访问的是同一个B实例的内部状态。
- 当A被DI容器创建时,容器会生成一个B实例注入到A的构造函数,此时A的
额外提醒:如果存在多个A的实例,每个A都会持有独立的B实例(因为B是瞬态)。其中一个A所持B的状态变更,不会影响其他A实例中的B,但同一个A实例内部的B状态变更,一定会在该A的后续调用中体现。
内容的提问来源于stack exchange,提问作者Vic
相关产品推荐
相关产品推荐

