Het is mogelijk om klassen te serialiseren/deserialiseren waarvan de eigenschappen alleen-lezen zijn. Als u probeert de persistentie van uw domeinobjecten onwetend te houden, wilt u BsonAttributes niet gebruiken om de serialisatie te begeleiden, en zoals u aangaf, vereist AutoMapping lees-/schrijfeigenschappen, dus u zou de klassenkaarten zelf moeten registreren. Bijvoorbeeld de klas:
public class C {
private ObjectId id;
private int x;
public C(ObjectId id, int x) {
this.id = id;
this.x = x;
}
public ObjectId Id { get { return id; } }
public int X { get { return x; } }
}
Kan worden toegewezen met behulp van de volgende initialisatiecode:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
Houd er rekening mee dat de privévelden niet alleen-lezen kunnen zijn. Merk ook op dat deserialisatie uw constructor omzeilt en de privévelden direct initialiseert (.NET-serialisatie werkt ook op deze manier).
Hier is een volledig voorbeeldprogramma dat dit test: