2013-02-01 44 views
8

मैं एएनटीएलआर के साथ .NET के लिए एक साधारण डीएसएल निर्माण कर रहा हूं और स्ट्रिंग में गतिशील विधि में स्ट्रिंग को बदल रहा हूं। मेरा पहला विचार आईएल ओपोड्स में अनुवाद किया गया था, लेकिन अब मैं डीएम निर्माण के लिए अभिव्यक्ति वृक्षों के बारे में पढ़ रहा हूं। ऐसा लगता है कि मैं आईएल कोड की तरह, अभिव्यक्ति पेड़ का उपयोग कर किसी भी विधि का उत्पादन कर सकता हूं?सी # गतिशील विधि - आईएल बनाम अभिव्यक्ति पेड़

धन्यवाद!

कोड: https://github.com/ricardoborges/NPortugol2

+0

आप अभिव्यक्ति पेड़ों के साथ नए प्रकार को परिभाषित करने में सक्षम नहीं होंगे। आईएल एक और अधिक लचीला है (लेकिन अभी तक उत्पन्न करने में बहुत आसान है)। –

उत्तर

9

आईएल कोड यदि आप एक छोटे से अधिक शक्ति देता है। उदाहरण के लिए, आप इसका उपयोग उस कोड को उत्सर्जित करने के लिए कर सकते हैं जो .NET CLR के लिए सही है लेकिन आवश्यक नहीं है कि आप C# या VB.NET में लिखे गए हों।

लेकिन आम तौर पर, आप अभिव्यक्ति के पेड़ों के साथ कुछ भी करना चाहते हैं, और वे अपने सिर को लपेटने के लिए बहुत आसान हैं।

उत्सर्जित आईएल कोड शायद अभिव्यक्ति वृक्ष को संकलित करने से कुछ तेज गति से चलाएगा। मैं इस बारे में चिंता नहीं करता (समयपूर्व अनुकूलन), लेकिन यह ध्यान देने योग्य है। कुछ प्रदर्शन चश्मे के लिए How does having a dynamic variable affect performance? देखें।

+0

कूल! इसे समझाने के लिए धन्यवाद! मैं लिंक पढ़ूंगा! – Ricardo

+2

दोनों के बीच एक महत्वपूर्ण अंतर यह है कि आईएल का उपयोग पूरे वर्ग और असेंबली बनाने के लिए किया जा सकता है। अभिव्यक्तियों का उपयोग केवल विधियों को बनाने के लिए किया जा सकता है। – svick