Comment on serialization.
This commit is contained in:
parent
6af2243660
commit
00c60ba0ad
27
README.md
27
README.md
@ -174,4 +174,31 @@ oder nicht-normalen Parametern oder immer mit ausgegeben werden:
|
||||
Die Markierung besonderer Parameter erfolgt in der Textdatei, aus der
|
||||
das `zaaReloaded2.Thesaurus.Parameters` generiert wird (s.o.).
|
||||
|
||||
|
||||
## Serialisierung
|
||||
|
||||
Um das Stil-Repositorium (`zaaReloaded2.Controller.SettingsRepository`)
|
||||
in den Assembly-Properties speichern zu können und für den Im- und
|
||||
Export von Stilen werden die in .NET eingebauten
|
||||
Serialisierungs-Strukturen genutzt. Weil es mit der Verwendung eines
|
||||
`XmlSerializer`s Probleme gab, weil der `XmlSerializer` nicht mit
|
||||
Interface-Eigenschaften umgehen kann, wurde zunächst für alle Klassen,
|
||||
die serialisiert werden müssen (`SettingsRepository`,
|
||||
`zaaReloaded2.Controller.Settings` und die von
|
||||
`zaaReloaded2.Controller.Elements.ElementBase` abgeleiteten Klassen) das
|
||||
Interface `ISerializable` implementiert. Das hat aber auch nicht dazu
|
||||
geführt, daß der `XmlSerializer` die Klassen serialisierte, so daß
|
||||
jetzt der `SoapFormatter` verwendet wird. Der stört sich nicht an
|
||||
Interface-Eigenschaften und produziert auch XML, wenngleich im etwas
|
||||
komplizierten [SOAP][]-Format.
|
||||
|
||||
Um das `SettingsRepository` in den Assembly-Properties zu persistieren,
|
||||
muß das serialisierte XML noch in einen Base64-kodierten String
|
||||
umgewandelt werden, damit das SOAP-XML nicht mit dem XML der
|
||||
Assembly-Properties ins Gehege kommt (siehe
|
||||
`zaaReloaded2.Controller.SettingsRepository.Load()` und
|
||||
`zaaReloaded2.Controller.SettingsRepository.Store()`).
|
||||
|
||||
[SOAP]: http://de.wikipedia.org/wiki/SOAP
|
||||
|
||||
<!-- vim: set tw=72 sw=2 ts=2 sts=-1 : -->
|
||||
|
@ -44,6 +44,19 @@ namespace zaaReloaded2.Controller
|
||||
{
|
||||
#region Properties persistence
|
||||
|
||||
/// <summary>
|
||||
/// Loads the SettingsRepository instance that was persisted in
|
||||
/// the assembly properties.
|
||||
/// </summary>
|
||||
/// <returns>SettingsRepository that was last stored in the
|
||||
/// assembly properties, or a newly created SettingsRepository
|
||||
/// if no previously stored exists.</returns>
|
||||
/// <remarks>
|
||||
/// The SettingsRepository is serialized using a SoapFormatter, which
|
||||
/// creates SOAP XML. Since the assembly properties are stored as
|
||||
/// XML as well, the serialized SettingsRepository is converted to
|
||||
/// a base-64 string, which does not mess with the properties XML.
|
||||
/// </remarks>
|
||||
public static SettingsRepository Load()
|
||||
{
|
||||
string s = Properties.Settings.Default.SettingsRepository;
|
||||
@ -63,6 +76,15 @@ namespace zaaReloaded2.Controller
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stores the SettingsRepository in the assembly properties.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The SettingsRepository is serialized using a SoapFormatter, which
|
||||
/// creates SOAP XML. Since the assembly properties are stored as
|
||||
/// XML as well, the serialized SettingsRepository is converted to
|
||||
/// a base-64 string, which does not mess with the properties XML.
|
||||
/// </remarks>
|
||||
public void Store()
|
||||
{
|
||||
MemoryStream stream = new MemoryStream();
|
||||
|
Loading…
Reference in New Issue
Block a user