Autor Beitrag
shadowrunner
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 02.05.08 16:44 
Hi Leute, super Forum (*mein erster Thread*)!
Hab mal ne Frage und zwar:
Kann auch eine statische Klasse serialisiert werden?

Hab das bei meinem Programm mal probiert, und zwar so:
-Normalen FileStream und BinaryFormatter erstellt
-[Serialize]-Attribut vor der statischen Klasse gesetzt

Zumindest bei mir ging es so nicht, also nahm ich mal das 'static' vor der Klasse weg (die Felder sind nach wie vor static).
Nun habe ich eine Instanz der (ehemaligen statischen) Klasse erzeugt und abgespeichert. Beim Wiedereinlesen ändert sich aber lt. Debugger nichts!

Ich weiß, dass statische Variablen nur einmal im Speicher vorhanden sind, werden sie jedoch beim Abspeichern einer Instanz der Klasse auch mit abgespeichert? (Schätze nicht )-; )

Gibt es sonst noch eine andere Art das ganze anzugehen? Ich meine ich könnte jedes Feld einfach normal abspeichern, werd ich jetzt mal versuchen, aber ich wäre schon interessiert, ob Ihr vielleicht noch eine andere Art wüsstet!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Fr 02.05.08 17:07 
Wieso möchtest du eine statische Klasse als Datei abspeichern und dann wieder einlesen? Ich sehe da keinen Nutzen. Du könntest natürlich eine Struktur erstellen, die exakt die selben Felder hat, und diese serialisieren. Und beim deserialisieren dann genau andersherum.
shadowrunner Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 02.05.08 17:13 
Bei der statischen Klasse handelt es sich um die Farben des Spielfeldes. Die Farben kann der User im Spiel ändern. Wenn nun das Programm geschlossen wird, sollten die Farben in eine Datei abgespeichert werden und da dachte ich mir, das wäre das Feinste, wenn ich einfach die ganze Klasse abspeichern könnte.
Beim Öffnen des Spieles sollte geschaut werden, ob die Datei existiert und falls ja, wird sie ausgelesen.

Also das mit der Struktur geht bestimmt, aber rein aus Neugier: Weiß einer, ob statische Variablen mitabgespeichert werden? (ich kannsja in der Datei nicht nachlesen und google brachte auch nichts)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 02.05.08 17:39 
Hallo und :welcome:!

Für diesen Zweck gibt es schon eine Vorgehensweise: Du findest im Solution Explorer des Visual Studio in Deinem Projekt einen Ordner "Properties" und darin eine Datei "Settings.sesttings". Mach da mal einen Doppelklick. Da kannst Du verschiedene Einstellungen für Dein Projekt anlegen und speichern. Bei jeder Einstellung kannst du sagen, ob es eine Per-User-Einstellung sein soll (scope = User) oder nicht.

Hast Du da Deine Einstellungen angelegt, kannst Du recht einfach drauf zugreifen:
ausblenden C#-Quelltext
1:
Properties.Settings.Default.DeineEinstellung = "foobar";					


Geänderte Einstellungen kannst Du speichern mit:
ausblenden C#-Quelltext
1:
Properties.Settings.Default.Save();					

Geladen werden die beim Programmstart automatisch.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 02.05.08 20:05 
Der Vollständigkeit halber: Unter "ISerializable" wird die Serialisierung eines Singletons beschrieben. Das erste Mal, dass ich von IObjectReference höre :gruebel: , dürfte beinahe der einzige Anwendungszweck sein.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 02.05.08 20:14 
Ah, interessant, kannte ich auch noch nicht :)
Ich hatte vor meiner Antwort oben auch erst an einen Singleton gedacht, aber da ich das noch nicht kannte, verworfen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
shadowrunner Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 02.05.08 20:53 
Wow, danke für Eure schnelle Hilfe! Werde das alles gleich mal ausprobieren.
Wie gesagt, super Forum!

EDIT: Funktioniert perfekt!!! Danke