AppDomain 之间是不是共享静态类? [复制]
Posted
技术标签:
【中文标题】AppDomain 之间是不是共享静态类? [复制]【英文标题】:Are static class shared between AppDomain? [duplicate]AppDomain 之间是否共享静态类? [复制] 【发布时间】:2017-02-20 09:16:39 【问题描述】:我有四个程序集,ModuleStatic、Loader 和 ModuleA 和 ModuleB,除了 Loader 是可执行文件之外,它们都是 DLL。
在 DLL ModuleStatic 中:
public class ModuleStatic
public static string Foo get; set; = "Foo";
在Loader中,ModuleA和ModuleB会通过Assembly.Load和AppDomain分别加载到domA和domB。如果ModuleA修改了ModuleStatic.Foo变量,domB中的ModuleB会收到修改吗?
【问题讨论】:
【参考方案1】:不,变量,无论是否静态,都不会在AppDomain
s 之间共享。实例存在于它们自己的 AppDomain 中,除非您为它做一些工作,否则它们不会交叉,例如通过将其设置为 MarshalByRefObject
并复制静态“实例”。
【讨论】:
...或者当包含静态字段/属性的类型被标记为[Serializable]
以上是关于AppDomain 之间是不是共享静态类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 .NET 中,创建新的 AppDomain 时是不是调用静态构造函数?