Пожалуйста, объясните мне эту сериализацию.

2

Простой класс ниже наследует от HashSet и, следовательно, должен реализовывать члены ISerialization (нестандартным образом). Я получаю следующее исключение при попытке сериализации, а затем десериализую экземпляр группы:

Метод испытания UtilitiesTests.GroupTest.SerializeTest бросил исключение: System.Reflection.TargetInvocationException: Het doel van een aanroep heeft een uitzondering veroorzaakt. --- > System.Runtime.Serialization.SerializationException: Lid nameprop - это niet gevonden..

К сожалению, это на голландском языке. Это означает, что элемент "nameprop" не найден! Что не так?

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Grouping
{
    [Serializable]
    public class Group<T> : HashSet<T>
    {
        public Group(string name)
        {
            Name = name;
        }

        protected Group(){}

        protected Group(SerializationInfo info, StreamingContext context):base(info,context)
        {
            Name = info.GetString("nameprop");
        }

        protected new void GetObjectData(SerializationInfo info,StreamingContext context)
        {
            base.GetObjectData(info,context);
            info.AddValue("nameprop", Name);
        }

        public string Name { get; private set; }
    }
}
Теги:
serialization

1 ответ

6
Лучший ответ

Ваш метод GetObjectData никогда не вызывается во время сериализации, потому что вы не переопределяете родительский метод - вы его затеняете. Вы должны использовать override, а не new.

  • 0
    Спасибо! Вот и все ... Не могли бы вы указать мне английское сообщение об ошибке, чтобы облегчить поиск этого вопроса другими простыми людьми, такими как я?
  • 0
    Я не знаю, поскольку я на самом деле не запускал код, только посмотрел на него :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню