c# - ICodeCompiler,动态代码和静态

时间:2011-04-21 18:22:00

标签: c# static compilation

我有一个系统可以“动态”编译和执行c#代码,可以这么说。静态类用于保存系统中的配置数据。

如果我从“即时编译代码”中访问静态类 - 一切正常。

但是,如果我从“动态编译代码”中访问静态类然后尝试访问“动态编译代码”之外的相同静态类,则静态类中的所有配置数据都已丢失。几乎就像它已被重新安置一样。

“即时编译代码”在相同的应用程序域中运行,如果这有所不同。

任何人都能解释为什么会这样吗? (从已编译的代码中访问静态会重置其配置数据)

最佳,

1 个答案:

答案 0 :(得分:0)

C#中的

静态与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是您的朋友)。