Laden...

XML Deseralisierung gibt Daten nicht weiter

Erstellt von Rico913 vor 3 Jahren Letzter Beitrag vor 3 Jahren 437 Views
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren
XML Deseralisierung gibt Daten nicht weiter

Ich stehe momentan vor folgendem Problem:

Ich serialisiere eine XML-Datei -> funktioniert:


public void Save()
		{
			
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextWriter(FileName, Encoding.Unicode))
			{
				serializer.WriteObject(stream, this);
			}
		}

Der Code für die Deserialisierung sieht wie folgt aus:


public XMLgenerator Load()
		{
		
			var deserializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextReader(FileName))
			{
				XMLgenerator config = deserializer.ReadObject(stream) as XMLgenerator;
				return config;
			}

		}

Leider wird aber in der Zeile return config nichts ausgegeben.
Laut Debugger liest er aber alle Daten eine Zeile vorher "XMLgenerator config ...." richtig aus.

Warum werden diese nicht "übergeben"? Was mache ich falsch?

D
261 Beiträge seit 2015
vor 3 Jahren

Wie sieht deine XMLgenerator aus?

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

[Serializable]
	class XMLgenerator
	{
	        public decimal Messlinie_Thickness;
		public SerializableFont Draw_Label_Image_Font, Draw_Label_Messlinie_Font;
		public decimal LinienEnde_Radius;
		public Color LinienEnde_Farbe;
		public Color Messlinie_Farbe, Draw_Guideline_Farbe;
		public bool NummerierungLinien;
		public int Messen_Text_Rundung;
		public string LDaten_Drive;
		public decimal Unit_Switch_PixelSize_threshold;

		
		private void SetDefaultValues()
		{
			this.Messlinie_Thickness = 1;
			this.Draw_Label_Image_Font = new SerializableFont(new Font("Arial", 8));
			this.Draw_Label_Messlinie_Font = new SerializableFont(new Font("Arial", 8));
			this.LinienEnde_Radius = 1;
			this.LinienEnde_Farbe = Color.Red;
			
			this.NummerierungLinien = false;
			this.Messen_Text_Rundung = 1;
			this.Unit_Switch_PixelSize_threshold = 10;
			this.LDaten_Drive = @"\\sdrsmalabp03\malab$";
		}

		// ---------------------------------------------------------------------------------------

		
		[XmlIgnore]
		public const string FileName = "......\Programmdaten\\admin_config.dat";

		
		[XmlIgnore]
		public static XMLgenerator Setting { get; set; }

		
		public XMLgenerator()
		{
		}

		public static void Default()
		{
			XMLgenerator.Setting = new XMLgenerator();
			XMLgenerator.Setting.SetDefaultValues();
		}
		
		public XMLgenerator Load()
		{
		
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextReader(FileName))
			{
				XMLgenerator config = serializer.ReadObject(stream) as XMLgenerator;
				return config;
			}

		}


		public void Save()
		{
			var serializer = new DataContractSerializer(typeof(XMLgenerator));
			using (var stream = new XmlTextWriter(FileName, Encoding.Unicode))
			{
				serializer.WriteObject(stream, this);
			}
		}
	}


	[DataContract]
	internal class Setting
	{
		[DataMember]
		public decimal Messlinie_Thickness { get; set; }
		[DataMember]
		public SerializableFont Draw_Label_Image_Font { get; set; }
		[DataMember]
		public decimal LinienEnde_Radius { get; set; }
		[DataMember]
		public SerializableFont Draw_Label_Messlinie_Font { get; set; }
		[DataMember]
		public Color LinienEnde_Farbe { get; set; }
		[DataMember]
		public Color Messlinie_Farbe { get; set; }
		[DataMember]
		public Color Draw_Guideline_Farbe { get; set; }
		[DataMember]
		public bool NummerierungLinien { get; set; }
		[DataMember]
		public int Messen_Text_Rundung { get; set; }
		[DataMember]
		public string LDaten_Drive { get; set; }
		[DataMember]
		public decimal Unit_Switch_PixelSize_threshold { get; set; }

	}

D
261 Beiträge seit 2015
vor 3 Jahren

Leider wird aber in der Zeile return config nichts ausgegeben.

Du meinst zurückgegeben und nicht ausgegeben oder? Laut deinem Screenshot gibt die Load-Methode aber ein Objekt zurück. Was genau ist das Problem?

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Anscheinend werden die Werte richtig ausgegeben, aber bei der Übergabe scheitert es:


XMLgenerator AdminXML = new XMLgenerator();

        public void Load_Settings()
        {
            AdminXML.Load();
            num_Messlinie_Thickness.Value = AdminXML.Messlinie_Thickness;
             ........
             ........
        }

D
261 Beiträge seit 2015
vor 3 Jahren
AdminXML.Load();

Du verwendest den Rückgabe-Wert des Methodenaufrufs nicht.

var loadedXML = AdminXML.Load();
num_Messlinie_Thickness.Value = loadedXML.Messlinie_Thickness;
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Das isses ... ich danke dir!!!!!