2010-12-13 10 views
1

Ich habe einige Variablen in einer App wie: public int temp = 10 ;eigentlichen Code in Programm ändern

Gibt es eine Möglichkeit, dass ich meine temporäre Variable ändern kann, so dass meine temporäre Variable beim Neustart der App ist der letzte Wert enthält, die war darin gespeichert? Ich möchte das ohne eine Konfigurationsdatei machen.

(dh ich irgendwann möchte meine Temp wie ändern: temp = x; wobei x eine ganze Zahl ist und nachdem ich meine App schließen und wieder zu starten, sollte die temporäre Variable enthalten x und nicht 10)

+1

Und wo würde der Wert gespeichert werden, während die App nicht ausgeführt wird oder der Computer neu gestartet wird? Sie haben begrenzte Möglichkeiten, den Wert beizubehalten, es ist entweder eine Datei oder eine Registrierungseinstellung (oder ein Remote-Computer, aber das ist eine andere Geschichte) – SWeko

+0

Und warum sollten Sie das tun? Was ist so unangenehm an einer Konfigurationsdatei? –

+0

Ich war neugieriger als gewillt dies zu tun, war eine Frage, die ich für eine Weile hatte und endlich die Chance hatte, sie zu fragen, in diese Situation gebracht zu werden. – Alex

Antwort

1

würde ich tun dies für eine Produktionsanwendung nicht empfehlen, aber wenn es nur morbide Neugier dann schlage ich Sie in diesem Tutorial einen Lese- : Modifying the IL at runtime. Es ist kein Tutorial, das ich bis zum Ende geschafft habe, aber vor einiger Zeit war ich daran interessiert, mit IL/CLR zu spielen und daran zu basteln.

Alles, was Sie es für die Produktion verwenden möchten, sollte in der Vielzahl der verfügbaren Speicheroptionen bestehen bleiben: Konfigurationsdateien, Datenbank, Dateisystem, Registrierung, etc. Ändern der ausführbaren Datei ist ein große Sache und sollte t leicht betrachtet werden.

2

Sie müssen diesen Wert irgendwo beibehalten. Abhängig von der Art der Anwendung, die Sie entwickeln (WinForms, ASP.NET, ...), kann diese irgendwo variieren. Zum Beispiel, wenn dies eine Windows-Anwendung ist, könnten Sie die Application Settings verwenden.

+0

Ich entwickle eine WinForm-App und hoffte, keine weitere Datei für nur 4 Ganzzahlen zu erstellen. Ich habe mich nicht gefreut, diese Datei nach meinem Programm zu verschieben. Ich werde über die Anwendungseinstellungen schauen. Danke – Alex

+0

@Badescu Alexandru, mit den Anwendungseinstellungen ist sehr einfach in einer Windows-Anwendung.Sie müssen lediglich den Visual Studio Designer verwenden, um Ihrem Projekt eine Einstellungsdatei hinzuzufügen, die eine stark typisierte Klasse erstellt, mit der Sie Werte laden und speichern können. –

3

Nun, es muss nicht eine "Config" -Datei sein, aber es muss eindeutig irgendwo die Daten bestehen. Das Ändern der ausführbaren Datei selbst scheint ein ziemlich drastischer Ansatz zu sein, um ehrlich zu sein ... gemeinsame Speicheroptionen umfassen das Dateisystem und die Registrierung ... Was versuchst du zu tun, das würde mit diesen konventionelleren Ansätzen nicht adäquat gelöst werden?

+0

Ich entwickle eine WinForm-App und hoffte, eine weitere Datei für nur 4 ganze Zahlen zu erstellen, die ich brauche. Ich habe mich nicht gefreut, diese Datei nach meinem Programm zu verschieben. – Alex

+0

@Basescu: Beim Kopieren einer anderen Datei handelt es sich wahrscheinlich um einen * viel * saubereren Ansatz als beim Versuch, die ausführbare Datei neu zu schreiben. Zumal Sie die aktuell laufende Datei nicht überschreiben können ... –

0

Sie können die Einstellungen Objekt in der Anwendung praktisch Lese-/Speicher verwenden Werte

0

Es scheint, es gibt einen Sicherheitsgrund für Ihre Frage. Wenn Sie die Daten nicht auf der Festplatte haben möchten (nicht einmal verschlüsselt) und der Computer nicht neu gestartet wird, kann ein anderer Prozess den Wert für Sie speichern.

Es gibt viele Optionen für die Kommunikation zwischen Prozessen, aber Sie müssen Daten verschlüsselt übertragen.

0

Klingt, als ob Sie nach Orthogonal Persistenz suchen. Es gibt sehr wenige Programmiersprachen, die diese Funktion unterstützen. Und ich denke, es gibt keine Mainstream-Sprachen, die orthogonale Persistenz unterstützen. Ref: Orthogonal Persistence article.

Für C# müssen Sie mindestens Konfigurationsdateien, Registrierung oder Datenbank verwenden.

Verwandte Themen