[c#] deserializacja obiektu w nowym projekcie

0

Mam problem. Otóż utworzyłem nowy projekt i przeniosłem do niego plik zserializowany w starym projekcie. Okazało się, że nie da się go deserializować bo wyskakuje błąd. Jak się okazało w nagłówku tego pliku widoczna jest nazwa starego projektu i kilka danych jeszcze, reszta pliku nieczytelna. Da się jakoś zserializować ten plik w starym projekcie żeby nie było tej nazwy projektu? Albo czy da się jakoś deserializować ten plik w nowym projekcie?

// coś ogłaszasz? nie? to po kiego grzyba przyklejasz wątek?!? ostrzegam... - Ł

0

Da się zdeserializować. Mam przykład, ale będę mógł go podać po południu..

0

czekałem cały dzień na Azariena w oczekiwaniu na pomoc i się nie doczekałem :(
Niestety mój problem z deserializacją wynika z tego, że microsoftowa deserializacja zawiera błąd. Tutaj jego opis:
http://support.microsoft.com/kb/960442
Myślałem, że tego uniknę, ale niestety nie udało się i zamiast deserializacji BinaryFormatterem, która daje zgrabny plik będę musiał użyć armaty - XmlSerializera, która zwróci rozpaśny plik w rozmiarze XXXL:(

1

Możesz jeszcze sam sobie napisać swojego serializera ;)

Albo poczekać na Azariena, kiedyś pewnie wróci...

0
class IgnorantBinder : SerializationBinder
{
   public override Type BindToType(string assemblyName, string typeName)
   {
      return Type.GetType(this.GetType().Namespace+typeName.Substring(typeName.LastIndexOf('.')));
   }
}

użycie:

var bf = new BinaryFormatter();
bf.Binder = new IgnorantBinder();
// i dalej deserializacja normalnie

W ten sposób nazwa pliku wykonywalnego, jego wersja, oraz oryginalny namespace są olewane, natomiast IgnorantBinder musi być w tym samym namespace'ie co deserializowana klasa (ta nowa).

0

dzięki, ciekawe czy zadziała :)

0

na marginesie to używałem już wiele binderów i żaden nie działał, ale ten może zadziała :D

0

potwierdzam, ten binder działa :D

0

ale nie działa jak się go umieści w bibliotece dll :(
aa to mój błąd, bo umieściłem deserlializowaną klasę w innej klasie

//q: WTF?

1 użytkowników online, w tym zalogowanych: 0, gości: 1