In questi giorni stavo dilettandomi a scrivere un Formatter personalizzato da affiancare al BinaryFormatter e al SoapFormatter. Grazie al prezioso link di Adrian sono partito leggendo la serie di articoli di Jeffrey Richter sulla serializzazione. Nel primo di questi articoli sono elencate la serie di operazioni eseguite da un generico Formatter durante la deserializzazione. In questa fase è citato il metodo statico FormatterServices.GetSerializableMembers. La documentazione microsoft riguardo questo metodo dice:
"Gets all the serializable member for a class of specified type". Inoltre nella sezione Remarks specifica: "Generally, members of a class are the nontransient, nonstatic members such as fields and properties. To be included, properties must have both a getter and a setter."
In pratica il metodo restituisce tutti i campi di una classe e le proprietà che implementano il get e il set. Mosso dalla curiosità provo e.... sorpresa! Tra i membri restituiti dal metodo nessuna traccia delle proprietà. Per avere la conferma dell'anomalia ho controllato il mio mono 1.0 nuovo di zecca e ho scoperto che l'effettiva implementazione di mono recupera solo i campi della classe.
Errore della documentazione o bug....? Ai posteri (o al fw 2.0) la risposta...