C# zapisz do xml obiektu

0

napiszałem taki oto kod:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Drawing;

public class Auto
{
public Auto()
{
}
public string Model
{
get;
set;
}
public int Rocznik
{
get;
set;
}
public Color Kolor
{
get;
set;
}
}

class Program
{
static void Main(string[] args)
{

    Auto moje = new Auto();
    moje.Rocznik = 2010;
    moje.Model = "Mercedes";
    moje.Kolor = Color.Black;
    Console.WriteLine("Przed zapiszem");
    Console.WriteLine(moje.Model);
    Console.WriteLine(moje.Rocznik);
    Console.WriteLine(moje.Kolor);
    XmlSerializer serializer = new XmlSerializer(typeof(Auto));
    StreamWriter writer = new StreamWriter("base.xml");
    serializer.Serialize(writer, moje);
    writer.Close();
    
    FileStream stream = new FileStream("base.xml", FileMode.Open);
    XmlReader reader = new XmlTextReader(stream);
     
    Auto nowe = (Auto)serializer.Deserialize(reader);
    stream.Close();
    Console.WriteLine("Po zapisie");
    Console.WriteLine(nowe.Model);
    Console.WriteLine(nowe.Rocznik);
    Console.WriteLine(nowe.Kolor);

   
}

}

i mam problem bo nie zapisuje mi koloru do XMLa.
0

Obiekt klasy Color nie da się serializować.

0

Z kolorem jest ten kłopot że nie posiada żadnych publicznych pól z geterem i setterem, dlatego się nie serializuje.
Dodaj do swojej klasy pole np.

public string ColorString {get {this.Kolor.ToString(); } set { return (new ColorConverter()).ConvertFromString(value);}}

Kolor oznacz jako XmlIgnore

1 użytkowników online, w tym zalogowanych: 0, gości: 1