MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

C# 10gen e mongo:deserializzazione per i membri come interfacce

Il problema con le raccolte personalizzate in 1.4.2 e versioni precedenti è che poiché non è presente alcun serializzatore registrato per la raccolta personalizzata, il driver C# tenta di serializzarlo utilizzando BsonClassMapSerializer. Ma BsonClassMapSerializer richiede che la classe venga serializzata per esporre tutti i dati da serializzare come proprietà get/set pubbliche (cosa che la tua classe di base List non fa).

L'unica cosa che cambia in 1.5 è il modo in cui il driver sceglie quale serializzatore utilizzare quando un POCO implementa IEnumerable o IDictionary.

Puoi utilizzare raccolte personalizzate già in 1.4.2 e versioni precedenti registrando in modo esplicito un serializzatore per la tua raccolta personalizzata in questo modo:

BsonSerializer.RegisterSerializer(typeof(MyCollection), new EnumerableSerializer<int>());