Keresés

Új hozzászólás Aktív témák

  • DrojDtroll

    veterán

    válasz DrojDtroll #8292 üzenetére

    Ezt a problémát megoldottam úgy hogy csináltam egy osztály ami egyetlen color field-et tartalmaz.

    Most a serializációval küszködök.

    A Class amit el kellene menteni.
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.IO;

    namespace raw_data
    {
    [Serializable]
    public class ColorPalette : Data.ISeriazable
    {
    private List<Imaging.RefColor> _colorList;

    public string SerializedName { get; set; }
    public ColorPalette()
    {
    ColorList = new List<Imaging.RefColor>();

    ColorList.Add(new Imaging.RefColor(Settings.ColorPalette.Default.DefaultMin));
    ColorList.Add(new Imaging.RefColor(Settings.ColorPalette.Default.DefaultMax));
    SerializedName = Settings.Folder.Default.ColorPalette + Path.AltDirectorySeparatorChar + System.IO.Directory.GetFiles(Settings.Folder.Default.ColorPalette).Length;
    }

    public List<Imaging.RefColor> ColorList { get => _colorList; set => _colorList = value; }
    public Lut lut { get; set; }

    public string GetSerializedName()
    {
    return SerializedName;
    }

    }
    }

    A serializálást végző függvény:
    public static void SerializeObject(Data.ISeriazable obj)
    {
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(obj.GetSerializedName(),
    FileMode.Create,
    FileAccess.Write, FileShare.None);
    formatter.Serialize(stream, obj);
    stream.Close();
    }

    A visszatöltés metódusa
    internal static void LoadSerializedPalettes(GroupBox colorPaletteGroupBox)
    {

    string[] serializedfilenames=Directory.GetFiles(Settings.Folder.Default.ColorPalette);
    foreach (var item in serializedfilenames)
    {
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(item,
    FileMode.Open,
    FileAccess.Read,
    FileShare.Read);
    ColorPalette cp = (ColorPalette)formatter.Deserialize(stream);
    stream.Close();
    ColorPaletteSettings.ColorPaletteList.Add(cp);
    AddNewPalatte(colorPaletteGroupBox, cp);
    }
    }

    Nem töltődnek rendesen vissza az objektumok. A stream még rendesen megvan. Debugban látom, hogy a hossza olyan mint amilyennek lennie kell.

    :( Mitől lehet, hogy mégis null-t kapok?

Új hozzászólás Aktív témák

Hirdetés