Не помечено как сериализуемая ошибка при сериализации класса

Я сериализую структуру, используя BinaryFormatter , используя этот код:

private void SerializeObject(string filename, SerializableStructure objectToSerialize)
{
    Stream stream = File.Open(filename, FileMode.Create);
    BinaryFormatter bFormatter = new BinaryFormatter();
    bFormatter.Serialize(stream, objectToSerialize);
    stream.Close();
}

Какой objectToSerialize является моей структурой, я Я вызываю эту функцию следующим образом:

SerializableStructure s = new SerializableStructure();
s.NN = NN;
s.SubNNs = SubNNs;
s.inputs = inputs;
SerializeObject(Application.StartupPath + "\\Save\\" + txtSave.Text + ".bin", s);

which SerializableStructure , и тип NN , SubNNs и входы сериализуемы. (входные данные содержат некоторые Точки , Прямоугольники и общие списки).

Теперь, когда я запускаю свой код, я получаю следующую ошибку:

Введите MainProject.Main в сборке MainProject, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null 'не помечен как сериализуемый.

Почему мне выдается эта ошибка? Main - это моя форма, и эти переменные находятся в моей форме.

Я успешно сериализовал Тип NN с MemoryStream и VB.NET, но я не знаю, почему я получаю эту ошибку?

Вот определение моих структур:

SerializableStructure:

[Serializable()]
public class SerializableStructure
{
    public List<Inputs> inputs = new List<Inputs>();
    public NeuralNetwork NN;
    public NeuralNetwork[] SubNNs;
}

Inpu ts:

[Serializable()]
public class Inputs
{
    public string XPath { get; set; }
    public string YPath { get; set; }
    public string ImagePath { get; set; }
    public string CharName { get; set; }
    public string CharBaseName { get; set; }
    public List<double> x { get; set; }
    public List<double> y { get; set; }
    public List<double> DotsX { get; set; }
    public List<double> DotsY { get; set; }
    public List<Point> GravityCenters { get; set; }
    public List<Rectangle> Bounds { get; set; }

    public override string ToString()
    {
        return CharName;
    }

    public Inputs(string xPath, string yPath, string imagePath, string charName, string charBaseName)
    {
        XPath = xPath;
        YPath = yPath;
        ImagePath = imagePath;
        CharName = charName;
        CharBaseName = charBaseName;
        x = new List<double>();
        y = new List<double>();
        GravityCenters = new List<Point>();
        Bounds = new List<Rectangle>();
    }
}

Также NN - это очень большая структура (!).

20
задан Wai Ha Lee 8 January 2016 в 14:58
поделиться