उन वर्गों को क्रमबद्ध/deserialize करना संभव है जहां गुण केवल पढ़ने के लिए हैं। यदि आप अपने डोमेन ऑब्जेक्ट्स को अनभिज्ञ रखने की कोशिश कर रहे हैं, तो आप क्रमबद्धता को निर्देशित करने के लिए BsonAttributes का उपयोग नहीं करना चाहेंगे, और जैसा कि आपने बताया कि ऑटोमैपिंग को पढ़ने/लिखने के गुणों की आवश्यकता होती है, इसलिए आपको कक्षा के नक्शे को स्वयं पंजीकृत करना होगा। उदाहरण के लिए, कक्षा:
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 क्रमांकन इस तरह से भी काम करता है)।
यहां एक संपूर्ण नमूना कार्यक्रम है जो इसका परीक्षण करता है: