Det är möjligt att serialisera/avserialisera klasser där egenskaperna är skrivskyddade. Om du försöker hålla dina domänobjekt beständighet okunniga, vill du inte använda BsonAttributes för att styra serialiseringen, och som du påpekade kräver AutoMapping läs/skrivegenskaper, så du måste registrera klasskartorna själv. Till exempel 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 mappas med följande initialiseringskod:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
Observera att de privata fälten inte kan vara skrivskyddade. Observera också att avserialisering går förbi din konstruktor och direkt initierar de privata fälten (.NET-serialisering fungerar också på detta sätt).
Här är ett komplett exempelprogram som testar detta: