C# 反射类访问公共资源

C# 定义一个公共的库,库中有一个静态变量 在主程序初始化了值。
通过反射加载另外一个库,反射出来的库同样引用了公共库, 在放射出来的类中去访问公共库中的静态变量就为空,是怎么回事,有知道的哥们自导下。

一句代码木有
但是我们可以猜一猜
假设主库引用了公共库,同时引用了继承公共库的A,理论上无问题。当然如果主库引用了A,我想你不会在想着弄反射,既然引用了A那么直接new A就好,反射派不上用途
所以反证,主库没有引用A。那么你怎么引用的的A呢,应该是Assembly.Load,这种

于是有2种情况:
1.A.dll 和主库在相同目录,并且公共库版本签名相同。load的时候,系统判定公共库已经在domain里无需在加载,那么此时A和主库使用相同的Assembly
2.假设A.dll 被放进了和主库不同的目录,此时也有2种情况
2.1:如果A.dll目录里也存在公共库,那么主库反射加载a.dll会重新加载公共库
2.2:如果A.dll目录里没有公共库,他会向主库的domain反馈有个依赖库需要加载,请问主库加载没有

其实这问题很常见,因为很早以前我们就一直碰到一些这类问题,比如官方告诉你无法将“XML对象转换成XML对象”,“无法将JToken转换成JToken”,其实就是这种问题,虽然都是JToken,不过他们不是主程序域的相同Assembly.

解决方法:去查找 AssemblyLoadContext相关资料,这个我不贴代码了。因为这玩意还是很复杂的,一句话两句话难的折腾清除,只能你自己理解了

把你的所谓公共库的静态变量的定义贴出看看,是定义在什么类里的