c# - ICodeCompiler,动态代码和静态
可以这么说,我有一个“即时”编译和执行 C# 代码的系统。静态类用于保存系统内的配置数据。
如果我从“动态编译代码”中访问静态类 - 一切都可以。
但是,如果我从“动态编译代码”内访问静态类,然后尝试访问“动态编译代码”之外的相同静态类,则静态类中的所有配置数据都已丢失。几乎就像它被重新实例化一样。
如果这有影响的话,“动态编译的代码”会在同一个应用程序域中运行。
谁能解释为什么会发生这种情况? (从编译的代码中访问静态会重置其配置数据)
最好,
本尼
I have a system that compiles and executes c# code "on the fly", so to speak. Static classes are used holding config data within the system.
If I access a static class from within the "on the fly compiled code" - all OK.
However, If I access a static class from within the "on the fly compiled code" then try to access the same static class outside of the "on the fly compiled code", all config data in the static class has been lost. Almost like it has been reinstanciated.
The "on the fly compiled code" is run in the same app domain, if this makes a difference.
Can anyone explain why this occurs? (Accessing a static from within the compiled code resets its config data)
Best,
Benny
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C# 中的 static 与 C 代码中的 static 不同。
我想你想要一个单身人士。
它保证 AppDomain 中始终存在该类的一个实例。
如果您要在不同的 AppDomain 中加载动态编译的代码,并且您想要一个跨应用程序域的单例,那么也有解决方案(Google 是您的朋友)。
static in C# is not the same as static in C code.
I think you want a singleton.
It guarantees that there is one instance of the class, ever, in an AppDomain.
If you are loading your dynamically-compiled code in a distinct AppDomain, and you want a cross-appdomain singleton, there are solutions for that too (Google is your friend).