2008-12-02 10 views
7

जब मैं अपने तरीकों से ऊपर टैग लागू मैं त्रुटिVB.NET एक्सटेंशन के तरीके

प्रकार System.Runtime.CompilerServices.Extension परिभाषित नहीं है मिलता है।

यहाँ मेरी नमूना

<System.Runtime.CompilerServices.Extension()> _ 
    Public Sub test() 

End Sub 

कहाँ मैं गलत जा रहा हूँ है?

संपादित ~ सीधे MSDN अनुच्छेद here, वही त्रुटि

 
Imports System.Runtime.CompilerServices 

Module StringExtensions 
    _ 
    Public Sub Print(ByVal aString As String) 
     Console.WriteLine(aString) 
    End Sub 

End Module 

मैं विजुअल स्टूडियो 2008 और अपने प्रोजेक्ट में 3.5 फ्रेमवर्क का उपयोग कर रहा से।

समाधान ~ परियोजना 2.0 फ्रेमवर्क पर थी। 3.5 में बदल गया और यह काम करता है।

उत्तर

8

आईडीई फ्रेमवर्क का कौन सा संस्करण आईडीई इंगित कर रहा है?

इसके अलावा, पहली नज़र में एक्सटेंशन विधि का वाक्यविन्यास गलत दिखता है।

कोड अपूर्ण है। कृपया किसी भी व्यक्ति को कोड का उपयोग करने और इसे संकलित करने के लिए उदाहरण में उपयोग कथन डालें - त्रुटि को पुन: उत्पन्न करने के लिए।

+0

यह 2.0 था। मुझे 3.5 में बदलना पड़ा और यह काम करता है। –

+0

एक्सटेंशन .NET 3 में पेश किए गए थे, इसलिए यह .NET 2.X प्रोजेक्ट में समर्थित नहीं है। – awe

+0

अतिरिक्त काम के साथ 2।0 एक्सटेंशन विधियों का समर्थन करेगा। मेरे पास .NET 2.0 फ्रेमवर्क के लिए संकलित एक वीएस 2010 डीएल है। मैंने सूचना के लिए निम्नलिखित दो लिंक का पालन किया: http://www.codeproject.com/Articles/31260/Extension-Methods-in-VB-NET एमएसडीएन पत्रिका में आलेख के अंत की ओर जांचें-http: //msdn.microsoft .com/en-us/magazine/cc163317.aspx # S7 – JohnL

0

उपयोग इस ...

System.Runtime.CompilerServices.ExtensionAttribute

नाम स्थान आप का उल्लेख में विस्तार कहा जाता है कुछ भी नहीं मिल सका।

3

आप केवल यह त्रुटि मिल रही किया जाना चाहिए यदि निम्न में से एक सत्य

  1. आप वी.एस. 2008 उपयोग नहीं कर रहे हैं - विस्तार विधि समर्थन में VS2008 जोड़ा गया है
  2. आपका कोड प्रणाली के लिए एक संदर्भ नहीं है .Core.dll - VS2008

में भी जोड़ा गया है क्या आप इनमें से दोनों की जांच कर सकते हैं? मेरा मानना ​​है कि आप विस्तार विधि बनाने के लिए VS2005 का उपयोग करने का प्रयास कर रहे हैं। यदि ऐसा है, तो दुर्भाग्य से समर्थित नहीं है।

+0

मैं वीएस 2008 का उपयोग कर रहा हूं। जब मैंने System.Core के संदर्भ को जोड़ने का प्रयास किया, तो इसकी ग्रिड आउट (जिसका अर्थ है)। –

0

मैं आयात के लिए नाम स्थान जोड़ना होगा ताकि आप इसे हर बार टाइप करने के लिए की जरूरत नहीं है:

Imports System.Runtime.CompilerServices 

<Extension()> _ 
Public Sub Test(ByVal Value As String) 

End Sub 

एक बार जब आप इसे अपने आयात में है तुम बस के बजाय हर विधि के शीर्ष करने के लिए एक्सटेंशन जोड़ सकते हैं पूरी बात का।

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

+0

मैंने किया, मेरा संपादन देखें ... अभी भी काम नहीं करता है। –

+0

क्या आप _ बिट पर राइट क्लिक कर सकते हैं और परिभाषा पर जा सकते हैं? –