c# - What does Expression.Compile do on Monotouch? -


तो निम्न करता है

अभिव्यक्ति के पेड़ में वर्णित लैम्ब्डा अभिव्यक्ति को निष्पादन योग्य कोड में संकलित करता है और लैम्ब्डा अभिव्यक्ति का प्रतिनिधित्व करने वाले एक प्रतिनिधि का उत्पादन करता है।

और यह पोर्टेबल क्लास पुस्तकालयों में उपलब्ध है।

हालांकि, मोनोचौच के माध्यम से .net चल रहा है

चूंकि आईफोन के कर्नेल एक कोड को गतिशील रूप से उत्पन्न करने से रोकता है, मोनो को डायनामिक कोड पीढ़ी के किसी भी रूप का समर्थन नहीं करता है।

इसलिए आईओएस पर Xamarin पर आधारित अभिव्यक्ति का समर्थन नहीं कर सकता .Compile।

तो क्या होता है जब आप एक्सप्रेशन कॉल करते हैं IOM पर कॉम्पाइल एक्सैमरिन? क्या यह फेंक और अपवाद है, और यदि ऐसा है तो क्या अपवाद? और यह कहीं भी दस्तावेज है?

कोड को एओटी विकल्प से संकलित किया जाता है, इसलिए इसे वास्तव में संकलित नहीं किया जाएगा रनटाइम (मुझे संकलन पर पृष्ठभूमि में होने वाले विवरण नहीं पता) () माइक्रोसॉफ्ट प्रलेखन का उदाहरण आईओएस डिवाइस पर ठीक है, कोई अपवाद नहीं।

  सार्वजनिक ओवरराइड शून्य पूर्ण हुआ लांचिंग (UIApplication एप्लिकेशन) {System.Linq.Expressions.Expression & lt; Func & lt; int, bool & gt; & gt; Expr = i = & gt; मैं & lt; 5; // अभिव्यक्ति के पेड़ को निष्पादन योग्य कोड में संकलित करें। फ़ंक्शन & lt; int, bool & gt; Deleg = expr.Compile (); // विधि डालें और आउटपुट प्रिंट करें। कंसोल.प्रकाश रेखा ("प्रतिनिधि (4) = {0}", प्रतिनिधि (4)); }  

आप रनटाइम पर आईएल कोड नहीं बना सकते (System.Reflection.Emit) और कुछ लिंकर विकल्प के साथ प्रतिबिंब का उपयोग करने पर भी प्रतिबंध हैं, ऐसे भाव हो सकते हैं जो एओटी संकलन नहीं करते हैं और उन मामलों में आपको JIT को एओटी-केवल विकल्प के साथ संकलित करने की कोशिश में रनटाइम पर एक अपवाद मिलेगा।


Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -