我有一个系统可以“动态”编译和执行c#代码,可以这么说。静态类用于保存系统中的配置数据。
如果我从“即时编译代码”中访问静态类 - 一切正常。
但是,如果我从“动态编译代码”中访问静态类然后尝试访问“动态编译代码”之外的相同静态类,则静态类中的所有配置数据都已丢失。几乎就像它已被重新安置一样。
“即时编译代码”在相同的应用程序域中运行,如果这有所不同。
任何人都能解释为什么会这样吗? (从已编译的代码中访问静态会重置其配置数据)
最佳,
尼
答案 0 :(得分:0)
静态与C代码中的静态不同。
我想你想要一个单身人士。
public sealed class Clazz
{
private readonly static Clazz _instance = new Clazz();
public static Clazz Instance { get { return _instance; } }
static Clazz { /* Required for lazy init */ }
private Clazz()
{
// implementation here
}
}
它保证在AppDomain中有一个类的实例。
如果您在不同的AppDomain中加载动态编译的代码,并且您想要一个跨应用程序域的单例,那么也有解决方案(Google是您的朋友)。