编译器,动态代码和静态

本文关键字:静态 代码 动态 编译器 | 更新日期: 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的单例,也有解决方案(谷歌是你的朋友)。