编译器,动态代码和静态
本文关键字:静态 代码 动态 编译器 | 更新日期: 2023-09-27 17:52:33
我有一个可以"动态地"编译和执行c#代码的系统。静态类用于保存系统中的配置数据。
如果我从"动态编译的代码"中访问一个静态类-一切OK。
但是,如果我从"动态编译代码"中访问静态类,然后尝试在"动态编译代码"之外访问相同的静态类,则静态类中的所有配置数据都丢失了。就像被重新加固过一样。
如果有区别的话,"动态编译的代码"在同一个应用域中运行。
谁能解释为什么会发生这种情况?(从编译后的代码中访问静态将重置其配置数据)
,
本尼
c#中的static和C代码中的static是不一样的。
我想你想要单人间。
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中加载动态编译的代码,并且你想要一个跨AppDomain的单例,也有解决方案(谷歌是你的朋友)。