【问题标题】: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会收到修改吗?

【问题讨论】:

    标签: c# reflection appdomain


    【解决方案1】:

    不,变量,无论是否静态,都不会在AppDomains 之间共享。实例存在于它们自己的 AppDomain 中,除非您为它做一些工作,否则它们不会交叉,例如通过将其设置为 MarshalByRefObject 并复制静态“实例”。

    【讨论】:

    • ...或者当包含静态字段/属性的类型被标记为[Serializable]
    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多