Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

CompactFormatter e serializzazione di classi ereditate

Qualche giorno fa ho parlato del CompactFormatter, una class library che aggiunge la serializzazione binaria al .NET Compact Framework. In questo momento lo sto utilizzando per un progetto ed ho riscontrato un problema: se tento di serializzare una classe ereditata, i campi della classe base non vengono serializzati. Facendo un'esecuzione passo-passo, si scopre che il problema risiede nella seguente riga di codice, contenuta nel file ClassInspector.cs:

FieldInfo[] array = type.GetFields(BindingFlags.Public| BindingFlags.NonPublic | BindingFlags.Instance|BindingFlags.DeclaredOnly);
Il metodo Type.GetFields, utilizzato per recuperare i campi della classe che si sta serializzando, è richiamato con il flag BindingFlags.DeclaredOnly che, come riporta MSDN, search only the fields declared on the Type, not fields that were simply inherited. Di conseguenza, per ottenere una serializzazione di tutti i membri della classe, compresi quelli ereditati, è sufficiente eliminare questo tag, in modo che l'istruzione sopra riportata diventi:

FieldInfo[] array = type.GetFields(BindingFlags.Public| BindingFlags.NonPublic | BindingFlags.Instance);

Print | posted on martedì 6 febbraio 2007 19:02 | Filed Under [ .NET Compact Framework ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET