プロパティが読み取り専用であるクラスをシリアル化/逆シリアル化することが可能です。ドメインオブジェクトの永続性を無視しようとしている場合は、BsonAttributesを使用してシリアル化をガイドする必要はありません。また、AutoMappingには読み取り/書き込みプロパティが必要であるため、クラスマップを自分で登録する必要があります。たとえば、クラス:
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; } }
}
次の初期化コードを使用してマッピングできます:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
プライベートフィールドは読み取り専用ではないことに注意してください。また、逆シリアル化はコンストラクターをバイパスし、プライベートフィールドを直接初期化することにも注意してください(.NETシリアル化もこのように機能します)。
これをテストする完全なサンプルプログラムは次のとおりです。