मैं MvcContrib ग्रिड घटक को देख रहा हूं और मैं रोमांचित हूं, फिर भी एक ही समय में ग्रिड सिंटैक्स में उपयोग किए गए सिंटैक्टिक ट्रिक द्वारा, इसे वापस कर दिया गया है :
.Attributes(style => "width:100%")
ऊपर दिया गया सिंटैक्स जेनरेट किए गए HTML की शैली विशेषता सेट करता है width:100%
। अब अगर आप ध्यान दें, तो 'शैली' कहीं भी निर्दिष्ट नहीं है, अभिव्यक्ति में पैरामीटर के नाम से घटाया गया है! मुझे इसमें खुदाई करनी पड़ी और पाया कि 'जादू' कहाँ होता है:
Hash(params Func<object, TValue>[] hash)
{
foreach (var func in hash)
{
Add(func.Method.GetParameters()[0].Name, func(null));
}
}
तो वास्तव में, कोड विशेषता नाम-मूल्य जोड़े के शब्दकोश बनाने के लिए औपचारिक, संकलन समय, मापदंडों के नाम का उपयोग कर रहा है। परिणामी सिंटैक्स का निर्माण वास्तव में बहुत स्पष्ट है, लेकिन एक ही समय में बहुत खतरनाक है। लैम्ब्डा अभिव्यक्ति का सामान्य उपयोग साइड इफेक्ट के बिना उपयोग किए गए नामों के प्रतिस्थापन के लिए अनुमति देता है। मुझे एक पुस्तक में एक उदाहरण दिखाई देता है जो कहता है कि collection.ForEach(book => Fire.Burn(book))
मुझे पता है कि मैं अपने कोड में लिख सकता हूं collection.ForEach(log => Fire.Burn(log))
और इसका मतलब वही है । लेकिन MvcContrib ग्रिड सिंटैक्स के साथ यहाँ अचानक, मुझे ऐसा कोड मिल गया है जो सक्रिय रूप से दिखता है और मेरे चर के लिए चुने गए नामों के आधार पर निर्णय लेता है!
तो क्या यह # C / 3.5 / 4.0 समुदाय और लैंबडा एक्सप्रेशन प्रेमियों के साथ आम बात है? या एक बदमाश एक चाल चाल है मैं के बारे में चिंता नहीं करनी चाहिए?