Ich versuche, ein Objekt zu XML zu serialisieren, das eine Reihe von Eigenschaften hat, von denen einige schreibgeschützt sind.Serialisierung von privaten Mitgliedsdaten
public Guid Id { get; private set; }
Ich habe die Klasse [Serializable] markiert und ich habe die ISerializable-Schnittstelle implementiert.
Unten ist der Code, den ich verwende, um mein Objekt zu serialisieren.
public void SaveMyObject(MyObject obj)
{
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
TextWriter tw = new StreamWriter(_location);
serializer.Serialize(tw, obj);
tw.Close();
}
Leider fällt es auf die erste Zeile mit dieser Nachricht.
Die InvalidOperationException wurde nicht behandelt: Es konnte keine temporäre Klasse generiert werden (Ergebnis = 1). Fehler CS0200: Eigenschaft oder Indexer ‚MyObject.Id‘ kann nicht zugeordnet werden - es ist nur
gelesen Wenn ich die Id-Eigenschaft auf public eingestellt es funktioniert gut. Kann mir jemand sagen, ob ich etwas tue oder zumindest wenn es überhaupt möglich ist?
+1, danke für den Hinweis auf meine Antwort. –
Ich habe meinen Code geändert, um den DataContractSerializer zu verwenden, und habe festgestellt, dass die GetObjectData-Methode weiterhin ausgeführt wird. Habe ich Recht damit, dass ich entweder Attribute auf meine Eigenschaften setzen kann, um sie zu serialisieren, oder kann ich die ISerializable-Schnittstelle implementieren? –
Wenn Sie ISerializable implementieren (oder ist es IXmlSealizable?), Erledigen Sie im Grunde alle die Arbeit selbst ... –