我们在 ASP.Net 解决方案中使用 Microsoft 的 Unity IOC 容器。
在顶层之一中,我们使用 RegisterInstance 方法。然后我们用 Resolve 方法把它放低。
在查看另一个问题时,我们看到 ASP.Net 具有线程敏捷性,即请求可以跳转线程。
那么问题来了,如果我们在一个线程上注册了一个实例,并且在我们解析实例之前请求跳转线程,我们会取回正确的实例吗?
我们在 ASP.Net 解决方案中使用 Microsoft 的 Unity IOC 容器。
在顶层之一中,我们使用 RegisterInstance 方法。然后我们用 Resolve 方法把它放低。
在查看另一个问题时,我们看到 ASP.Net 具有线程敏捷性,即请求可以跳转线程。
那么问题来了,如果我们在一个线程上注册了一个实例,并且在我们解析实例之前请求跳转线程,我们会取回正确的实例吗?
如果您在已注册的同一容器(或其子容器)上解析您的类型,您将获得正确的实例。
据我所知,不需要在每次请求时在容器中注册类型,这通常在应用程序启动时完成。
基于此
[...] Resolve、ResolveAll 和 BuildUp 都是线程安全的。看起来我们在文档中错过了它。
容器上的其他方法都不是线程安全的,因此如果要配置容器,则需要进行锁定。此外,如果您有一个线程配置和另一个线程解析,则会出现线程问题。
AFAIK,您的方法是正确的,您不必担心在 ASP.NET 应用程序中获得不正确的实例。