C# 依赖注入单例到瞬态

C# 依赖注入单例到瞬态,c#,.net-core,asp.net-core-webapi,C#,.net Core,Asp.net Core Webapi,如果我有一个作为瞬态注入的服务,但它依赖于IMemoryCache,它作为单例注入构造函数,这会导致内存泄漏吗?由于对IMemoryCache的引用,临时服务似乎永远不会是GCd。是这样吗?将单例注入瞬态并不重要,每次都会得到瞬态服务的新实例,但每次都会注入相同的单例。如果您不持有对临时服务的任何引用,则将对其进行伪装收集 在这个问题中,您可以阅读关于单例、瞬态和作用域的工作原理: 更新 您的单例服务将永远不会被收集,因为它将在您的应用程序运行时存在。解析程序将始终精确地引用该单例服务。但是,对

如果我有一个作为
瞬态
注入的服务,但它依赖于
IMemoryCache
,它作为
单例
注入构造函数,这会导致内存泄漏吗?由于对
IMemoryCache
的引用,临时服务似乎永远不会是GCd。是这样吗?

将单例注入瞬态并不重要,每次都会得到瞬态服务的新实例,但每次都会注入相同的单例。如果您不持有对临时服务的任何引用,则将对其进行伪装收集

在这个问题中,您可以阅读关于单例、瞬态和作用域的工作原理:

更新

您的单例服务将永远不会被收集,因为它将在您的应用程序运行时存在。解析程序将始终精确地引用该单例服务。但是,对瞬态服务的引用将不存在,因此即使它持有对单例的引用,也将对其进行伪装收集,单例的伪装收集不取决于瞬态服务的生命范围

附言

如果要监视内存泄漏,请阅读以下内容:

将单例注入瞬态并不重要,每次都会得到瞬态服务的一个新实例,但每次都会将相同的单例注入。如果您不持有对临时服务的任何引用,则将对其进行伪装收集

在这个问题中,您可以阅读关于单例、瞬态和作用域的工作原理:

更新

您的单例服务将永远不会被收集,因为它将在您的应用程序运行时存在。解析程序将始终精确地引用该单例服务。但是,对瞬态服务的引用将不存在,因此即使它持有对单例的引用,也将对其进行伪装收集,单例的伪装收集不取决于瞬态服务的生命范围

附言

如果要监视内存泄漏,请阅读以下内容:

临时服务将引用singleton服务,然后如何对其进行垃圾收集?这很有意义。不再有对瞬态的引用,所以它会被清理,不管它是否有仍然存在的引用。瞬态服务将有对单例服务的引用,那么它如何被垃圾收集?这是有意义的。不再有对瞬态的引用,所以它会被清除,不管它是否有仍然存在的引用。