XML Serialization
От: Аноним  
Дата: 05.11.07 18:49
Оценка:
Нужно сериализовать следующий класс в XML, при этом предполагается что также может быть и бинарная сериализация
public class A
{
   public Type   CurrentType;
   public object Value;
}


Для того, что бы научить xml сериализатор сериализовывать и дессириализовывать класс с полем типа object (которое может быть произвольного типа, указанного в поле CurrentType), реализую ISerialazble.
public class A : ISerialazble
{
   public Type   CurrentType;   
   public object Value;

   protected MessageContent(SerializationInfo info, StreamingContext context)
   {
      if (info == null)
           throw new ArgumentNullException("info");

      CurrentType = (Type) info.GetValue("CurrentType", typeof (Type));
      Value = info.GetValue("Value", CurrentType);
   }

   protected virtual void GetObjectData(SerializationInfo info, StreamingContext context)
   {
      info.AddValue("CurrentType", CurrentType);
      info.AddValue("Value", Value);
   }        

   void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
   {
     if (info == null)
            throw new ArgumentNullException("info");

        GetObjectData(info, context);
   }
}


И ничего не работает, при сериализации даже не заходит в GetObjectData... Видимо что то я явно неправильно понимаю в сериализации...
Re: XML Serialization
От: Igor Trofimov  
Дата: 05.11.07 19:05
Оценка:
А>Для того, что бы научить xml сериализатор сериализовывать и дессириализовывать класс с полем типа object (которое может быть произвольного типа, указанного в поле CurrentType), реализую ISerialazble.

XML-сериализация и ISerializable — это две совершенно не связанные вещи.
Для custom XML serialization есть IXmlSerializable.
А ISerializable — это для "стандартной" сериализации форматировщиками Remoting'а.
Re[2]: XML Serialization
От: Аноним  
Дата: 05.11.07 19:52
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

А>>Для того, что бы научить xml сериализатор сериализовывать и дессириализовывать класс с полем типа object (которое может быть произвольного типа, указанного в поле CurrentType), реализую ISerialazble.


iT>XML-сериализация и ISerializable — это две совершенно не связанные вещи.

iT>Для custom XML serialization есть IXmlSerializable.
iT>А ISerializable — это для "стандартной" сериализации форматировщиками Remoting'а.
Да я так и подозревал... Вообще это в высшей степени странно сделано.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.