2012-06-28 5 views
5

RavenDB किसी भी सीरियलाइजेशन विशेषताओं के बिना, किसी भी दिए गए सी # ऑब्जेक्ट पर सभी सार्वजनिक, निजी और संरक्षित गुणों को क्रमबद्ध कर सकता है।सी # में प्रदर्शन के बिना निजी फ़ील्ड को पढ़ने और सेट करने के लिए कैसे?

मुझे पता है कि यह प्रतिबिंब के साथ किया जा सकता है, लेकिन इसमें कुछ प्रदर्शन समस्याएं होंगी। क्या यह हासिल करने के लिए और अधिक कुशल तरीके हैं?

.NET में अंतर्निहित क्रमिकरण का उपयोग करने के लिए एनोटेशन की आवश्यकता होती है या कुछ धारावाहिक इंटरफेस को कार्यान्वित करने की आवश्यकता होती है, जबकि रावेनडीबी किसी भी दिए गए ऑब्जेक्ट को जेएसओएन से क्रमबद्ध कर सकता है।

मुझे तकनीक में अधिक दिलचस्पी है और यह विशिष्ट रूप से RavenDB नहीं है।

+11

मत करो। बस मत करो वे एक कारण के लिए निजी हैं। – Oded

+1

वह लक्ष्य क्या है जिसे आप प्राप्त करने का प्रयास कर रहे हैं? वे चर एक कारण के लिए निजी हैं; आप डिजाइन तोड़ने की कोशिश क्यों कर रहे हैं? – ean5533

+0

मुझे यह समझने में दिलचस्पी है कि कैसे RavenDB और अन्य समाधान काम करते हैं। – Olsenius

उत्तर

1

यदि प्रतिबिंब के माध्यम से गुणों को सेट करना बहुत धीमा है, तो आप गतिशील विधियों को उत्पन्न कर सकते हैं जो उन्हें रनटाइम पर सेट करते हैं। यह Relection.Emit का उपयोग करके या Expression<T> संकलित करके किया जा सकता है।

0

प्रेरणा के लिए एनएचबीर्नेट को देखें - अन्य विकल्पों के अलावा यह आपको यह दिखाने का मौका भी देता है कि कौन से गुण इंटरफेस का उपयोग करते रहेंगे। इंटरफेस को लागू करने वाले हुड रैपर ऑब्जेक्ट्स के तहत हैंडलिंग बदलती है।

उदाहरण के लिए देखें NHibernate Reflection Optimizer - what does it do?

संबंधित मुद्दे