2013-03-28 8 views
12

मैं ASP.NET सीख रहा हूँ और इस विधि घोषणा पर ठोकर खाई:सी # में फ़ंक्शन के पैरामीटर में स्क्वायर ब्रैकेट सिंटैक्स?

public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId) {.....} 

ट्यूटोरियल कहा categoryId क्वेरी करने के लिए स्ट्रिंग "आईडी" बराबर होगा (यूआरएल से, जैसे & आईडी = 5) लेकिन सवाल यह है कि [QueryString("id")] वाक्यविन्यास क्या कहा जाता है? क्या यह एएसपी.नेट के बाहर प्रयोग योग्य है और इसका आवेदन क्या होगा?

उत्तर

15

यह पैरामीटर categoryId पर QueryStringAttribute विशेषता लागू कर रहा है। यह सिर्फ एक विशेषता है, बस लोगों की तरह आप शायद अधिक इस तरह के तरीकों या वर्गों पर देख रही है, करने के लिए इस्तेमाल कर रहे हैं:

[STAThread] 
static void Main() 
{ 
} 

इस मामले में, शायद ढांचे (मैं किसी ASP नहीं कर रहा हूँ के कुछ हिस्से। नेट डेवलपर, इसलिए मैं बिल्कुल क्या इंगित नहीं कर सकता) सभी विधियों को खोजने के लिए प्रतिबिंब का उपयोग कर रहा है, पैरामीटर पर लागू QueryStringAttribute मानों को ढूंढें, और उसके बाद क्वेरी स्ट्रिंग में नामों वाले उन गुणों के नामों से मिलान करें, फिर विधि कॉल में प्रवेश करने के लिए मिलान मूल्यों को निकालने (फिर प्रतिबिंब का उपयोग करके)।

+0

"विशेषता" से आपका मतलब यह था: http://msdn.microsoft.com/en-us/library/z0w1kczw(v=vs.80).aspx विशेषता का वर्णन डेटा का वर्णन करने के लिए किया जाता है? AFAIK विशेषता सिर्फ एक मेटाडेटा है कि यह वास्तविक मूल्य में कैसे बदल सकती है और श्रेणी आईडी पर लागू हो सकती है? – 5argon

+0

@ सर्जन: यह मेटाडेटा है, हाँ - यह पैरामीटर पर ही लागू होता है ... और एएसपी.नेट स्वचालित रूप से GetProducts को कॉल करने के तरीके के बारे में काम करने के लिए उस मेटाडेटा का उपयोग करने में सक्षम है। इसका उल्लेख करने के लिए उत्तर संपादित करेंगे। प्रतिबिंब के बारे में उत्तर के लिए –

+1

धन्यवाद। अपनी खुद की विशेषता और प्रतिबिंब तकनीक लिखने में रुचि रखने वाले किसी भी व्यक्ति के लिए यह पृष्ठ है जिसे मैंने अभी पढ़ा है: http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx – 5argon

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