GAC中的.Net静态变量和DLL版本


有一个关于静态类/变量和DLL版本的问题。

如果我在DLL(版本1)中有一个静态变量,并将其加载到GAC中,然后创建一个较新版本的DLL(版本2)并将其装载到GAC,当调用任一版本时,它会引用内存中的相同变量吗?

示例:

  • 客户端1在DLL的版本1中设置一个静态变量IsAuthenticated = True
  • 客户端2获取相同静态变量(IsAuthenticated)的值,但它引用DLL的版本2

名称空间是相同的。

当客户端2调用IsAuthenticated时,它会/应该为True吗?

否,即使两个DLL都加载到同一进程中,每个(版本的)DLL都有自己的所有静态变量的副本。在这样的过程中共享内存(这是我对这个问题的解释)不仅是一场技术噩梦,而且是一个非常糟糕的主意。

最新更新