Как мне сериализовать список класса, объявленного в другом классе? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть класс рисования, и там я объявил

    public List<Layers> layers = new List<Layers>();

как список моего класса слоев.Теперь я хочу сериализовать в Xml класс Draw, но он дает ошибку , отражающую слои типа .

public class Draw
{
    [XmlIgnore]
    public Shape s = new Shape();
    [XmlIgnore]
    public ImageClass img = new ImageClass();
    public List<Layers> layers = new List<Layers>();
}

Класс слоя

public class Layers
{
    public ImageClass _image { get; set; }
    public Shape _shape { get; set; }
    public enum Type { Rectangle, Square, Circle, Ellipse, Triangle, Image }
    public Layers.Type type { get; set; }
    public float width { get; set; }
    public float height { get; set; }
    public PointF location { get; set;}
    public int radius { get; set; }
    public int strokeThickness { get; set; }
    public Color color { get; set; }
    public Bitmap image { get; set; }
    public RectangleF rect { get; set; }
    public PointF centerSerializable { get { return Shape.center; } set { Shape.center = value; } }
}

Метод сериализации

public void Serialization()
    {
        try
        {
            XmlSerializer ser = new XmlSerializer(typeof(Draw)); //Serializer
            SaveFileDialog save = new SaveFileDialog();           //Creates and Opens a SaveFileDialog
            save.Filter = "Seal Creator File (*.sealFile)|*.sealFile";     //Creates a filter fir saving the Project File
            save.DefaultExt = ".seal";
            save.AddExtension = true;

            if (save.ShowDialog() == DialogResult.OK)
            {
                //Serialization process for the Class
                FileStream file = File.Create(save.FileName);
                ser.Serialize(file, draw);
                file.Close();
                MessageBox.Show("Saved"); //Saving Confirmation
            }
        }
        catch (Exception ex)
        {
            //Catching the Error
            String innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : "";
            Debug.WriteLine(innerMessage);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...