Home > InfoTech > Deserialize Dictionary

Deserialize Dictionary

January 21st, 2009 Lascia un commento Vai ai commenti

Dopo infiniti debug ad una applicazione infimissima in c# abbiamo finalmente trovato la soluzione, utilizzando il miglior debug e solution solver in commercio. E’ un prodotto assolutamente gratis e usabile da tutti, in pieno stile 2.0: si chiama Google.

Ringrazio subito Miha Markič e Brent Challis per la preziosa collaborazione, anche senza che io gli avessi detto niente. Devono essere dei veri e propri guru :)

 

Problema

Non si riescie a deserializzare (da binario) un oggetto di tipo Dictionary, o meglio una classe che eredita un oggetto di tipo Dictionary<(Of <(TKey, TValue>. L’errore del compilatore (VS9 in ambiente .net 2.0) è:

{"Impossibile trovare il costruttore richiesto per deserializzare un oggetto di tipo '<Namespace>.<ClassName>'."}

 

Soluzione

L’oggetto Dictionary è serializzabile in quanto implementa l’interfaccia ISerializable. Al suo interno (classe base) è definito però un costruttore necessario alla deserializzazione:

protected Dictionary(SerializationInfo info, StreamingContext context);

E’ quindi necessario che nella nostra classe, che eredita Dictionary, quindi tutti i  suoi metodi ma non i suoi costruttori, implementare tale costruttore basato su classe base in questo modo:

public <ClassName>(SerializationInfo si, StreamingContext sc):base(si,sc){}

 

E il gioco è fatto! Grazie Franz per l’appoggio morale, e riprendi in mano il tuo blog che era eccezionale!

 

Approfondimenti online

La tecnologia informatica ha fatto passi da gigante. In modo particolare Google, che con il suo analizzatore di testo, è in grado di proporre collegamenti contestuali a quanto hai appena letto. Questi i link pubblicitari proposti da Adsense.

  1. Ancora nessun commento.
  1. Ancora nessun trackback.

Additional comments powered by BackType