Benutzer mit den meisten Antworten
XmlSerialisation für Klasse mit string & DataPointCollections

Frage
-
Hi!
Ich möchte folgende Klasse serialisieren:
[XmlRoot("AnalysisInformation")] public class AnalysisInformation { private string _sPath; private DataPointCollection _pDragPoints, _pFrontAxlePoints, _pRearAxlePoints; #region Constructor public AnalysisInformation() { } public AnalysisInformation(string Path, DataPointCollection DragPoints, DataPointCollection FrontAxlePoints, DataPointCollection RearAxlePoints) { _sPath = Path; _pDragPoints = DragPoints; _pFrontAxlePoints = FrontAxlePoints; _pRearAxlePoints = RearAxlePoints; } #endregion #region Variables [XmlElement("sPath")] public string sPath { get { return _sPath; } set { _sPath = value; } } [XmlArray("pDragPoints")] public DataPointCollection pDragPoints { get { return _pDragPoints; } set { _pDragPoints = value; } } [XmlArray("pFrontAxlePoints")] public DataPointCollection pFrontAxlePoints { get { return _pFrontAxlePoints; } set { _pFrontAxlePoints = value; } } [XmlArray("pRearAxlePoints")] public DataPointCollection pRearAxlePoints { get { return _pRearAxlePoints; } set { _pRearAxlePoints = value; } } #endregion }
Das ganze mit folgendem Code:
List<AnalysisInformation> mAnalysisList = new List<AnalysisInformation>() { new AnalysisInformation(sPath, chtDrag.Series[0].Points, chtFrontAxle.Series[0].Points, chtRearAxle.Series[0].Points) }; XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<AnalysisInformation>)); StreamWriter sw = new StreamWriter(sPath); xmlSerializer.Serialize(sw, mAnalysisList); sw.Close();
Sinn des ganzen ist es 3 DataVisualation-Charts, also ihre Daten, in eine Datei zu speichern, denn mit der Methode Chart.Serializer.Save() muss ich für jedes Chart eine Datei erstellen...
Beim Serialisieren wird folgender Fehler angezeigt:
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Xml.dll aufgetreten.
Zusätzliche Informationen: Fehler beim Reflektieren des Typs 'System.Collections.Generic.List`1[Windtunnel.AnalysisInformation]'.Ich hoffe ihr könnt mir helfen, oder einen anderen Weg zeigen!
Vielen Dank!
By The_Dani :P
Programmiersprachen: C# (Windows Forms), Java
Antworten
-
Meistens ist es das beste nur eigene Klassen für Serialisierungen zu verwenden.
Ja, indem du das da umsetzt. Du müsstest dafür die DataPointCollection-Objekte in eine eigene Klasse überführen und diese dann serialisieren.
Wobei du auch über die Save-Methode alles in eine Datei speichern könntest. Du musst dir dafür nur etwas ausdenken um die einzelnen Diagramme innerhalb der Datei von einander unterscheiden zu können. Das könnte allerdings komplizierter werden, falls die Save-Methode nicht in XML o.ä. serialisiert.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert The_Dani Sonntag, 11. September 2016 20:24
Alle Antworten
-
Hallo,
ich vermute dass es an den DataPointCollection-Eigenschaften in der AnalysisInformation-Klasse liegt. Denn der DataPointCollection-Typ hat keinen öffentlichen, Parameterlosen Konstruktor. Von daher wirst du diese Klasse nicht für eine Serialisierung verwenden können.
Meistens ist es das beste nur eigene Klassen für Serialisierungen zu verwenden. Denn nur da kann man wirklich bestimmen wie sie sich (über verschiedene Versionen hinweg) verhalten.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Meistens ist es das beste nur eigene Klassen für Serialisierungen zu verwenden.
Ja, indem du das da umsetzt. Du müsstest dafür die DataPointCollection-Objekte in eine eigene Klasse überführen und diese dann serialisieren.
Wobei du auch über die Save-Methode alles in eine Datei speichern könntest. Du musst dir dafür nur etwas ausdenken um die einzelnen Diagramme innerhalb der Datei von einander unterscheiden zu können. Das könnte allerdings komplizierter werden, falls die Save-Methode nicht in XML o.ä. serialisiert.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert The_Dani Sonntag, 11. September 2016 20:24