Als kleines Experiment habe ich Code geschrieben, der eine eigene Klassendatei bearbeitet.Quelldatei nach der Bearbeitung aktualisieren - C#
Im Einzelnen:
namespace Dynamic
{
class DynamicFunction
{
public double Function(double field1, double field2)
{
//Reference
return field1;
//EndReference
}
}
}
ich dynamisch bin die Bearbeitung der 'Funktion' Methode durch das Programm selbst. Also, wenn man field1% field 2 zurückgeben wollte, würde man einfach 'return field1% field2;' eintippen, einen Knopf drücken, und ein Filestream würde den eigentlichen Quellcode editieren.
Es scheint jedoch, dass dies keine Auswirkungen auf die Klassendatei hat, bis das Programm geschlossen wird, dann wird es wirksam, wenn es wieder geöffnet wird. Was ist das Geschäft?
Hier ist das Schreiben von Code: „kompilierte“
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;
C# ist kompiliert. Änderungen an der Quelle werden erst wirksam, wenn Sie die Quelle erneut kompiliert und die Anwendung neu gestartet haben. – Chris
Danke. Gibt es eine Möglichkeit, dies zu umgehen, abgesehen davon, dass der Benutzer das Programm neu starten muss? – user3112622
Nein. Sie können C# nicht zu einem interpretierten Programm machen. Sie können es fälschen, indem Sie einen String (wie "field1% field2") nehmen, dynamisch kompilieren und auswerten, aber Sie können nicht einfach den Quellcode der Anwendung ändern und erwarten, dass er etwas tut, bis die Anwendung neu kompiliert wird. – itsme86