Momentan habe ich mehrere Klassen, die ich serialisieren und auf Festplatte speichern möchte (das Format spielt keine Rolle). Alles, was ich wirklich speichern muss, sind ein paar Auswahlfelder von jedem. Diese Felder variieren von Klasse zu Klasse, aber sie sind alle öffentlich.Speichern und Serialisieren beliebiger Klassen
public class A {
public string stringField;
public int intField;
...
}
public class B {
public float floatField;
public Object objectField;
...
}
Mein Ansatz war es, eine einfache Container-Klasse haben, die ihnen diese Felder sowie laden speichern und serialisiert werden kann eine Instanz der Klasse mit den gespeicherten öffentlichen Bereichen für jede Klasse zurückzukehren.
Ich kann dies tun, indem ich eine Klasse mit passenden Feldern für die auf der Klasse, die ich speichern möchte, machen.
public class AStorage{
public string stringFieldStorage;
public int intFieldStorage;
...
public void StoreA(A a){
stringFieldStorage = a.stringField;
intFieldStorage = a.intField;
}
public A GetA(){
A a = new A();
a.stringField = stringFieldStorage;
a.intField = intFieldStorage;
return a;
}
}
Dies funktioniert, aber es bedeutet, dass ich eine Menge von Klassen brauchen, und ich brauche sie Felder zu geben, je nachdem, was sie aus der Klasse erhalten wollen sie speichern.
Ich habe mit Reflektion untersucht, um die Felder und Namen zu greifen, und das ist einfach. Ich könnte sie dann in einen Dictonary<string, Object>
geben, der durch den Feldnamen verschlüsselt wird und dann darauf verweisen. Aber das fühlt sich ein bisschen eklig an und hat mich dazu gebracht, mich zu fragen, ob ich überhaupt etwas falsch mache. Was sind die bewährten Methoden zum Speichern und Serialisieren von Klassen?
Serialisierung ist ein Problem gut durch das .NET Framework gelöst. Warum möchten Sie Ihre eigene Lösung erstellen? –