修改程序中的实际代码

时间:2010-12-13 13:09:31

标签: c#

我在应用中有一些变量,如:  public int temp = 10 ;

有没有办法可以修改我的临时变量,以便我的临时变量在重启app时包含存储在其中的最后一个值?我想在没有配置文件的情况下这样做。

(即我想在某些时候修改我的临时状态:temp = x;其中x是一个整数,在我关闭我的应用并再次启动它之后,临时变量应该包含x而不是10)

6 个答案:

答案 0 :(得分:3)

好吧,它不一定是一个“配置”文件,但显然必须将数据保存在某个地方。修改可执行文件本身似乎是一种相当激烈的方法,说实话......常见的存储选项包括文件系统和注册表......你试图用那些更传统的方法无法解决这些问题?

答案 1 :(得分:2)

您需要在某处保留此值。根据您正在开发的应用程序类型(WinForms,ASP.NET,...),此某处可能会有所不同。例如,如果这是一个Windows应用程序,您可以使用Application Settings

答案 2 :(得分:1)

我不建议为生产应用程序执行此操作,但如果只是病态的好奇心,那么我建议您阅读本教程:Modifying the IL at runtime。这不是我已经设法完成的教程,但不久之前我有兴趣使用IL / CLR并对此进行修改。

您想要在生产中使用它的任何内容都应该保留在您可以使用的各种可用存储选项中:配置文件,数据库,文件系统,注册表等。修改可执行文件是 big 事情,不应该被轻视。

答案 3 :(得分:0)

您可以使用应用程序中的Settings对象来方便地读取/存储值

答案 4 :(得分:0)

您的问题似乎有一个安全原因。 如果您不想将数据存储在磁盘上(甚至是加密的)并且计算机不会重新启动,则另一个进程可以为您保留该值。

进程间通信有很多选项,但您需要传递加密数据。

答案 5 :(得分:0)

听起来你正在寻找正交持久性。很少有编程语言支持这种功能。我认为没有支持正交持久性的主流语言。参考:Orthogonal Persistence article

对于C#,您必须至少使用配置文件,注册表或数据库。