编辑后更新源文件 - C#

时间:2016-07-28 22:11:17

标签: c# file

作为一个小实验,我编写了一些代码来编辑自己的一个类文件。

具体做法是:

namespace Dynamic
{
    class DynamicFunction
    {
        public double Function(double field1, double field2)
        {
            //Reference
            return field1;
            //EndReference
        }
    }
}

我通过程序本身动态编辑'Function'方法。因此,如果想要返回field1%字段2,他们只需输入'return field1%field2;',点击一个按钮,文件流就会编辑实际的源代码。

但是,在程序关闭之前,它似乎对类文件没有影响,然后在重新打开时生效。什么是有效的?

这是编写代码:

System.IO.File.Delete(path);
        using (System.IO.StreamWriter W = new System.IO.StreamWriter(path))
        {
            foreach (string s in C)
            {
                if (!s.Contains("return"))
                {
                    W.WriteLine(s);
                }
                if (s.Contains("return"))
                {
                    W.WriteLine(textBox3.Text);
                }
            }
        }
        int r = 0;

1 个答案:

答案 0 :(得分:1)

这背后的原因是,当您通过IDE运行程序或通过命令行编译程序时,它已被编译。"因此,在编辑文件时,您需要编辑源代码。但是,一旦程序编译,就不再需要使用源代码了。因此,当您通过IDE重新启动程序时,更改将生效,因为您重新编译该程序。据我所知,没有办法通过程序本身编辑程序的实际代码。操作系统不允许您在程序运行时编辑程序的二进制数据。不需要编辑实际代码的解决方法可以使用System.Reflection,这是一个允许通过字符串获取和调用方法的命名空间。您还可以看到this发布不同的方法。有了这些,您可以动态调用object.Equals()等可能满足您需求的方法。祝你好运!