2013-02-08 29 views
6

कुछ समय से Asp.Net MVC के साथ काम करना, लेकिन मैं एक बहुत ही अजीब सवाल पर फंस गया हूं। हर मैं एक मॉडल मैं की तरह लैम्ब्डा अभिव्यक्तियों का उपयोग करें बनाने के लिए:प्रतिबिंब के बजाय एएसपी.नेट एमवीसी में लैम्बडा का उपयोग क्यों करें?

@Html.EditorFor(model=>model.SomeProperty) 

क्यों Asp.Net MVC एक वास्तुकला के इस प्रकार उपयोग कर रहा है?

मैं प्रतिबिंब का उपयोग कर संपत्ति में क्यों नहीं जा सकता?

लैम्ब्डा अभिव्यक्ति का उपयोग तेजी से कर रहा है? क्योंकि हुड के तहत मुझे लगता है कि संपत्ति का नाम प्राप्त करने के लिए इसे प्रतिबिंब का उपयोग करना चाहिए।

+2

क्या आप कुछ @ @ Html.EditorFor (टाइपोफ (ParvsModel) .GetProperty ("SomeProperty"), BindingFlags.Public) जैसे कुछ लेबल/संपादन/प्रदर्शन के लिए अपने रेज़र व्यू में कुछ पसंद करना चाहते हैं? – GolfWolf

+3

आप @ Html.Editor ("SomeProperty") का उपयोग कर सकते हैं, लेकिन लैम्ब्डा संस्करण उन लोगों के लिए मौजूद है जो मजबूत प्रकार पसंद करते हैं। मैं हाल ही में एक ब्लॉग पोस्ट में इस विषय के माध्यम से चला गया: http://odetocode.com/blogs/scott/archive/2012/11/26/why-all-the-lambdas.aspx – OdeToCode

उत्तर

9

लैम्ब्डा> प्रतिबिंब

lambdas का उपयोग करना आपको मिलेगा:

  • डिजाइन समय, दृढ़ता से टाइप संपत्ति चयनकर्ताओं।
  • रीफैक्टरिंग ने अंतर्निहित विजुअल स्टूडियो रीफैक्टरिंग टूल का उपयोग करके आसान बना दिया। lambdas को

धन्यवाद, किसी भी API संपत्ति चयनकर्ता से बहुत कुछ पता कर सकते हैं:

  • संपत्ति प्रकार।
  • संपत्ति का उद्देश्य।
  • संपत्ति मेटाडेटा का निरीक्षण करें।

    public static MvcHtmlString EditorFor<TModel, TValue>(
        this HtmlHelper<TModel> html, 
        Expression<Func<TModel, TValue>> expression 
    ) 
    

    यह एक नियमित रूप से लैम्ब्डा अभिव्यक्ति पेड़ के बजाय है:

इसके अलावा, विधि हस्ताक्षर (http://msdn.microsoft.com/en-us/library/ee402949(v=vs.108).aspx) की जाँच करें। यह एमवीसी (और फिर, किसी भी एपीआई) को अभिव्यक्ति में हेरफेर करने के लिए अभिव्यक्ति में हेरफेर करने के लिए रन-टाइम के दौरान इसे चलाने के पहले अधिक व्यवहार जोड़ने की अनुमति देता है।

अभिव्यक्ति पेड़ों के बारे में अधिक जानें:

1

मेरा जवाब लोकप्रिय नहीं होगा।

मेरा मानना ​​है कि लैम्ब्डा 99% हमेशा तीन कारणों से बेहतर विकल्प हैं।

सबसे पहले, आपके डेवलपर्स स्मार्ट होने के साथ कुछ भी गलत नहीं है। अन्य उत्तरों में अंतर्निहित आधार है कि प्रत्येक डेवलपर लेकिन आप बेवकूफ हैं। ऐसा नहीं।

दूसरा, लैमदास (एट अल) एक आधुनिक वाक्यविन्यास हैं - और कल वे पहले से ही आज के मुकाबले अधिक आम होंगे। आपके प्रोजेक्ट का कोड वर्तमान और उभरते सम्मेलनों से बहना चाहिए।

तीसरा, कोड "पुराना फैशन तरीका" लिखना आपके लिए आसान लग सकता है, लेकिन यह कंपाइलर के लिए आसान नहीं है। यह महत्वपूर्ण है, संकलक के संशोधनों के रूप में विरासत दृष्टिकोण में सुधार करने का थोड़ा अवसर नहीं है। लैम्ब्डास (एट अल) जो उन्हें विस्तारित करने के लिए कंपाइलर पर भरोसा करते हैं, उन्हें समय के साथ बेहतर तरीके से संकलक के रूप में लाभ हो सकता है।

सारांश में:

  1. डेवलपर्स यह
  2. हर कोई कर रहा है यह
  3. वहाँ भविष्य के संभावित

फिर है संभाल कर सकते हैं, मुझे पता है यह एक लोकप्रिय जवाब नहीं होगा। और मेरा विश्वास करो "सरल है सर्वश्रेष्ठ" मेरा मंत्र भी है। रखरखाव किसी भी स्रोत के लिए एक महत्वपूर्ण पहलू है। मैं समझ गया। लेकिन मुझे लगता है कि हम अंगूठे के कुछ cliché नियमों के साथ वास्तविकता overhadowing रहे हैं।