SharePoint के लिए एक्सटेंशन तरीके लेखन
विस्तार तरीकों एक दुर्जेय प्रोग्रामिंग निर्माण कि कार्यान्वयन अमूर्त बढ़ाने और कोड के क्षेत्रों modularize, खुद को अच्छी तरह से ऋण अंतराल कि इस तरह की एक कि SharePoint प्रदान करता है के रूप में एक बंद एपीआई, में मौजूद हो सकता है भरने के लिए कर रहे हैं. अक्सर कई बार एक विशेष तरीका है कि एक विशेष प्रकार पर वांछनीय है हो सकता है, लेकिन इसे प्रदान करने के लिए विकल्प भेज दिया एपीआई सील और अन्य modifies के कारण में उपलब्ध नहीं हैं. विस्तार के तरीकों का उपयोग करना है, इस सीमा बाईपास संभव है जबकि एक साफ़ कार्यान्वयन कि गहरी भाग पेड़ के संदर्भ से बच सकते हैं बनाए रखने है.
विस्तार तरीके बढ़ महत्वपूर्ण जब SharePoint कोड के साथ काम कर रहे हैं क्योंकि वस्तुओं का बहुमत है कि आम तौर पर व्यवहार के अनुकूलन जनादेश, SPList प्रकार पर उदाहरण के लिए, एक सील इस प्रकार संशोधित संभव भाग negating उपयोग के साथ सजाया है होता है. यह सबसे महत्त्वपूर्ण है जब तुम नकली वस्तुओं, के साथ काम कर रहे हैं जो कुछ व्यवस्थाएं (यानी TypeMock) के बाहर एक unsealed वर्ग और एक डिफ़ॉल्ट निर्माता की आवश्यकता है.
अर्थात् जब कक्षा के भीतर विधि परिभाषा प्रदान करने का विरोध किया, एक विस्तार विधि केवल एक एसोसिएशन द्वारा परिभाषित किया गया है और एक अलग स्थिर आंशिक वर्ग द्वारा समर्थित वर्ग में समाहित constructs (यह वर्तमान क्षेत्र में एक namespace में मौजूद होना चाहिए). विधि का ही उदाहरण विधि वाक्यविन्यास का उपयोग लागू, कोड में कुछ परिचित स्तर की अनुमति है constructs. हालांकि विधि स्थिर है, यह केवल उदाहरण पर कहा जा सकता है के रूप में परिभाषित मापदंडों. संक्षेप में, एक विस्तार विधि एक पद्धति की एक अन्य श्रेणी में इंजेक्शन, तो यह घोषित किया है जैसे कि वह इसे का हिस्सा है की अनुमति होगी.
आदेश में विधि विस्तार तरीकों के कारण अस्पष्टता कमी को ही विधि नाम से परिभाषित किया जा रहा है, यह महत्वपूर्ण है को ध्यान में (वास्तव में उचित नामकरण परंपरा ले, उसी विस्तार नज़रअंदाज़ कर दिया जाएगा यदि हस्ताक्षर है!). इसके अलावा, SharePoint प्रकार है कि बढ़ाया जाएगा के रूप में MSFT द्वारा जारी एपीआई के संशोधन के लिए पाठ्यक्रम विषय के हैं. इसलिए, जब एपीआई परिवर्तन, वहाँ पीछे संगतता के वांछित स्तर की नहीं हो सकता.
एक विधि विस्तार के लिए वाक्यविन्यास बहुत (यह महत्वपूर्ण है सरल है ध्यान दें कि जब VB.NET विस्तार की आवश्यकता है विशेषता परिभाषित करने के लिए C #. लेकिन सी में # नहीं है हम वस्तु की एक प्रतिलिपि बनाने / वापस मूल्य इतना मजबूर हो रहे हैं यह evens बाहर!).
-
Extensions सार्वजनिक स्थैतिक कक्षा एक्सटेंशन्स
- (
- this Type type ) सार्वजनिक स्थैतिक प्रकार DoSomething (इस प्रकार प्रकार)
- (
- चलो / / कुछ जा रही हो जाओ!
- )
- )
आप देख सकते हैं कि स्थिर एक्सटेंशन्स वर्ग DoSomething विधि अपने संपूर्ण इस खोजशब्द आपरिवर्तक के साथ सजाया पैरामीटर में है, जो इस प्रकार विधि का विस्तार होगा संकेत मिलता है. तो, जब विस्तार तरीके लिखने के लिए (किसी भी पूरक मानकों के बिना) SPList वर्ग का विस्तार उदाहरण के लिए, हमारी कक्षा यह करना चाहते हैं:
- Extensions सार्वजनिक स्थैतिक कक्षा एक्सटेंशन्स
- (
- this SPList list ) सार्वजनिक स्थैतिक प्रकार DoSomething (यह SPList सूची)
- (
- चलो / / कुछ जा रही हो जाओ!
- )
-
)
लेकिन इतना नहीं कर रही है, ताकि हम एक और अधिक व्यावहारिक उदाहरण लेते हैं.
में नीचे, मैं मान रहा हूँ कि एक आवेदन के भीतर, SPList वस्तुओं पर, मैं अक्सर reordering हो वर्तमान उदाहरण के SPListItem संग्रह एक अवरोही क्रम में संशोधित की तारीख से जा रहा हूँ, और फिर पिछले 5 आइटम पुनःप्राप्त.
HarvestLastFive में, यह ध्यान देने योग्य है कि मैं सबसे पहले प्रकार को निर्दिष्ट कर रहा हूँ SPList प्रकार के साथ इस खोजशब्द का उपयोग करके लक्ष्य है. के बाद, मैं SPList.Items है, जो तब उपयोग करता है LINQ संयोजन में SPBuiltInFieldId.Modified संपत्ति के साथ विधि OrderByDescending को संभालने के एक SPListItemCollection निर्माण हूँ आदेश. अंत में, संशोधित संग्रह से बाहर वापस ले लो पहले 5 आइटम नहीं है. अगर आप अभी reordering चाहता था (विस्तार मैं दैनिक उपयोग बढ़ाकर हेरफेर समर्थन के लिए ऐसी LINQ संग्रह संशोधक का उपयोग करें), तुम सिर्फ बाहर ले बयान लेना होगा की एक किस्म.
- Extensions सार्वजनिक स्थैतिक कक्षा एक्सटेंशन्स
- (
- this SPList typeToTarget ) सार्वजनिक स्थैतिक IEnumerable <SPListItem> HarvestLastFive (यह SPList typeToTarget)
- (
- प्रयास करना
- (
- SPListItemCollection संग्रह typeToTarget =. आइटम;
- x => x [ SPBuiltInFieldId. Modified ] ) . Take ( 5 ) ; var finalCollection tempCollection =. (x => x SPBuiltInFieldId [OrderByDescending. संशोधित]). (5) ले लो;
- वापस finalCollection;
- )
- Exception exception ) (अपवाद अपवाद पकड़)
- (
- )
-
वापस बातिल;
- )
- )
तुम एक्सटेंशन्स वर्ग के सदस्यों में देखते हैं, कि HarvestLastFive विधि एक अलग चिह्न है सकते हैं (नीचे तीर थोड़ा), जो इसे एक विस्तार पद्धति के रूप में निर्दिष्ट करता है.

एक कक्षा में विधि का उपयोग करना है कि अन्य प्रकार पर उपलब्ध तरीकों को analgous है. उदाहरण के लिए, HarvestLastFive विधि के फार्म का रूप ले लेती हैं:
- सार्वजनिक स्थैतिक शून्य TestingExtensionMethod ()
- (
- . Lists [ "My List" ] ; SPList सूची = SPContext. Current. वेब. सूची [ "मेरी सूची"];
- ; var संग्रह की सूची =. HarvestLastFive ();
- / / आप जो चाहते हैं क्या!
- )
दृश्य स्टूडियो के अंतर्गत, इस विधि (विस्तार) उपसर्ग के साथ ToolTip पर एक विस्तार पद्धति के रूप में उल्लेख किया है.

यह तुम्हारे लिए काफी विस्तार तरीकों पर जाना देना चाहिए. मैं अपने आम विस्तार तरीकों कि मैं SharePoint के साथ प्रयोग के शीघ्र ही, इस का मतलब था एक परिचय होने के कुछ पोस्टिंग हो जाएगा.
4 टिप्पणियाँ »
आरएसएस के इस पोस्ट. Trackback URL पर टिप्पणियों के लिए फ़ीड































[...] इस पोस्ट में भी है, क्योंकि लोगों ने कहा कि वे एक और पुन: प्रयोज्य विस्तार विधि (आवश्यक यहाँ से उदाहरण) कि SharePoint में उपयोग किया. Tyrants! जब मैं एक कोड की समीक्षा करें कि SharePoint के कैलेंडर क्षेत्रों मैं इस आ मुद्दा मिल गया में से कुछ में टेप कर रही थी. जब SPUtility.FormatDate में मानकों की तारीख गुजर यह उम्मीद करेंगे कि यह UTC, में होंगे जो मेरी खास मामले में, साथ ही साथ मैं दूसरों को ग्रहण होगा, गलत था, क्योंकि यह स्थानीय समय के रूप में जमा किया गया. इस SPWeb.RegionalSettings.TimeZone वर्ग द्वारा प्रदान की विधियों का प्रयोग जो उचित विश्लेषण की अनुमति देगा द्वारा दूर किया जा सकता है SPWeb वस्तुओं पर होने के लिए उपयुक्त रूपांतरण समर्थन करते हैं. [...]
SharePoint शेल्टर »Blog Archive» द्वारा Pingback याद है जब UTC (एक्सटेंशन विधि) SPUtility.FormatDate का उपयोग करने के लिए - 29 सितम्बर 2008 @ 11:17
[...] Interesante मृत्यु के डी एडम Buenz sobre कोमो construir métodos डे विस्तार पैरा SharePoint. [...]
3.0 WSS और काई से Pingback: Recopilatorio de enlaces interesantes (XXII)! «Tecnología Pasión क्रम ला ... - 4 नवम्बर 2008 @ 8:51
[...] लेते हुए इस के लिए एक कदम: आगे और तकनीक का इस्तेमाल है कि एडम Buenz के बारे में विस्तार के लिए SharePoint तरीके लेखन पसंद SPList कक्षा में तो शामिल है पर blogged [...]
ISea (केवल आइपॉड और iTouch प्रयोक्ताओं के लिए) - फ़रवरी 1, 2009 @ 12:57 द्वारा Pingback
[...] विधि के एक्सटेंशन्स तरीके लिख कर SPList वस्तु का विस्तार है. यहाँ यह बताया, एडम Buenz बहुत धन्यवाद 09 अक्तूबर 2009 पोस्ट, Nadine Storandt द्वारा 04:20 के तहत दायर: काई, है [...]
SPList द्वारा Pingback कोई डिफ़ॉल्ट यूआरएल संपत्ति है - है Nadine डाक - developers.de - अक्टूबर 9, 2009 @ 7:35