我有四个程序集,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会收到修改吗?
答案 0 :(得分:5)
不,变量(静态与否)不会在AppDomain
之间共享。实例存在于他们自己的AppDomain中,除非您为它做一些工作,否则它们不会交叉,例如通过使其MarshalByRefObject
并复制静态“实例”。