Có thể tuần tự hóa / giải mã hóa các lớp trong đó các thuộc tính ở chế độ chỉ đọc. Nếu bạn đang cố gắng giữ cho các đối tượng miền của mình không biết gì về sự tồn tại lâu dài, bạn sẽ không muốn sử dụng BsonAttributes để hướng dẫn tuần tự hóa và như bạn đã chỉ ra rằng AutoMapping yêu cầu thuộc tính đọc / ghi, vì vậy bạn sẽ phải tự đăng ký các bản đồ lớp. Ví dụ:lớp:
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; } }
}
Có thể được ánh xạ bằng cách sử dụng mã khởi tạo sau:
BsonClassMap.RegisterClassMap<C>(cm => {
cm.MapIdField("id");
cm.MapField("x");
});
Lưu ý rằng không thể chỉ đọc các trường riêng tư. Cũng lưu ý rằng quá trình giải mã hóa bỏ qua phương thức khởi tạo của bạn và khởi tạo trực tiếp các trường riêng tư (tuần tự hóa .NET cũng hoạt động theo cách này).
Đây là một chương trình mẫu đầy đủ kiểm tra điều này: