有一个关于静态类/变量和DLL版本的问题。
如果我在DLL(版本1)中有一个静态变量,并将其加载到GAC中,然后创建一个较新版本的DLL(版本2)并将其装载到GAC,当调用任一版本时,它会引用内存中的相同变量吗?
示例:
- 客户端1在DLL的版本1中设置一个静态变量
IsAuthenticated = True
- 客户端2获取相同静态变量(
IsAuthenticated
)的值,但它引用DLL的版本2
名称空间是相同的。
当客户端2调用IsAuthenticated
时,它会/应该为True吗?
否,即使两个DLL都加载到同一进程中,每个(版本的)DLL都有自己的所有静态变量的副本。在这样的过程中共享内存(这是我对这个问题的解释)不仅是一场技术噩梦,而且是一个非常糟糕的主意。