Je možné serializovat/deserializovat třídy, kde jsou vlastnosti pouze pro čtení. Pokud se snažíte udržet stálost objektů vaší domény ignorovanou, nebudete chtít používat BsonAttributes k vedení serializace, a jak jste zdůraznili, AutoMapping vyžaduje vlastnosti pro čtení/zápis, takže byste si mapy tříd museli zaregistrovat sami. Například třída:
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; } }
}
Lze namapovat pomocí následujícího inicializačního kódu:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
Všimněte si, že soukromá pole nemohou být pouze pro čtení. Všimněte si také, že deserializace obchází váš konstruktor a přímo inicializuje soukromá pole (serializace .NET funguje také tímto způsobem).
Zde je úplný ukázkový program, který to testuje: