2017-02-20 29 views
2

我有四个程序集,ModuleStatic,Loader和ModuleA和ModuleB,除了Loader是可执行程序之外,它们都是DLL。是否在AppDomain之间共享静态类?

在DLL ModuleStatic:

public class ModuleStatic { 
    public static string Foo { get; set; } = "Foo";  
} 

在装载机,ModuleA和ModuleB将通过Assembly.Load和应用程序域分别被加载,以DOMA和domB。如果ModuleA修改了ModuleStatic.Foo变量,那么位于domB中的ModuleB会接受修改吗?

回答

4

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

+0

...或者当包含静态字段/属性的类型被标记为[[Serializable]]时, – tommed

相关问题