2009-07-31 11 views
2

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

Метод испытания UtilitiesTests.GroupTest.SerializeTest выбросил исключение: System.Reflection.TargetInvocationException: Het DOEL ван ееп aanroep heeft EEN uitzondering veroorzaakt. ---> System.Runtime.Serialization.SerializationException: Lid nameprop является ниет 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; } 
    } 
} 
+0

Если вам нужна дополнительная информация, зарегистрируйтесь на этой странице http://lifeelement.com. SerializationException Member не найден
http://lifeelement.com/news/serializationexception-member-was-not-found/. –

ответ

6

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

+0

Спасибо! Это было так ... Не могли бы вы указать мне сообщение об ошибке на английском, чтобы этот вопрос легче найти другими такими простаками, как я? – Dabblernl

+0

Я не знаю, как я на самом деле не запускал код, только посмотрел на него :) –

Смежные вопросы