Det er muligt at serialisere/deserialisere klasser, hvor egenskaberne er skrivebeskyttet. Hvis du forsøger at holde dine domæneobjekters persistens uvidende, vil du ikke bruge BsonAttributes til at guide serialiseringen, og som du påpegede, kræver AutoMapping læse/skriveegenskaber, så du skal selv registrere klassekortene. For eksempel klassen:
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 kortlægges ved hjælp af følgende initialiseringskode:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
Bemærk, at de private felter ikke kan være skrivebeskyttede. Bemærk også, at deserialisering omgår din konstruktør og initialiserer de private felter direkte (.NET-serialisering fungerer også på denne måde).
Her er et komplet eksempelprogram, der tester dette: