2009-06-10 13 views
5

पर एक्सटेंशन विधियां सीई ढांचे पर विस्तार विधियां भी उपलब्ध हैं? मेरे पास स्ट्रिंग के लिए एक विस्तार विधि है जो विंडोज़ प्रोजेक्ट प्रोजेक्ट में ठीक काम करती है, हालांकि यह पॉकेटपीसी एप्लिकेशन में नहीं बनती है।सी # पॉकेटपीसी विंडोज सीई

मुझे लगा कि यह पता लगाना एक आसान बात होगी, हालांकि मुझे पॉकेटपीसी पर विस्तार विधियों के बारे में कोई जानकारी नहीं मिली।

संपादित करें: ओउप्स यह मेरी गलती थी। मैंने विजुअल स्टूडियो 2008 में विस्तार विधि लिखी, हालांकि पॉकेटपीसी परियोजना विजुअल स्टूडियो 2005 में संकलित की जा रही थी, जिसे मुझे एहसास नहीं हुआ था। वैसे यह मेरे जीवन का एक घंटा है, मैं कभी वापस नहीं आ रहा हूं। वैसे भी जवाब के लिए सभी को धन्यवाद।

+0

क्या त्रुटि (रों) आप देख रहे हैं पर लिखा है? – ChrisF

उत्तर

7

यहां कुछ भ्रम को साफ़ करना चाहता था। एक्सटेंशन विधियां कंपाइलर की एक विशेषता है, जो आवश्यक रूप से ढांचे का एक विशेष संस्करण नहीं है। इसलिए, किसी भी प्लेटफ़ॉर्म पर एक्सटेंशन विधियों का उपयोग किया जा सकता है जहां कंपाइलर का एक संस्करण है जो एक्सटेंशन विधियों और उस प्लेटफ़ॉर्म दोनों का समर्थन करता है।

सी # 3.0 कंपाइलर 2.0 ढांचे को लक्षित कर सकता है और एक्सटेंशन विधियों का समर्थन करता है ताकि उन्हें कॉम्पैक्ट फ्रेमवर्क पर उपलब्ध होना चाहिए।

एकमात्र चीज जो वास्तव में विस्तार विधियों के लिए प्रदान करती है वह एक्सटेंशन एट्रिब्यूट है। हालांकि इसमें इसके साथ कोई कार्यक्षमता नहीं है और यदि यह उपलब्ध नहीं है तो आपके आवेदन द्वारा परिभाषित किया जा सकता है। यहाँ एक ब्लॉग पोस्ट मैं विषय

2

वे this blog post के अनुसार कॉम्पैक्ट फ्रेमवर्क में समर्थित हैं। हालांकि, मुझे उम्मीद है कि उन्हें कॉम्पैक्ट फ्रेमवर्क संस्करण 3.5 की आवश्यकता होगी। आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है?

2

आप किस फ्रेमवर्क संस्करण को लक्षित कर रहे हैं? आप VS2008 से सीएफ 2.0 लक्ष्यीकरण रहे हैं, तो आप extensionAttribute घोषित करने के लिए आवश्यकता हो सकती है ...

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class 
     | AttributeTargets.Method)] 
    public sealed class ExtensionAttribute : Attribute {} 
} 
+0

यहां से अच्छा लिंक: http://blog.markarteaga.com/UsingExtensionMethodsInNETCF20.aspx –

+0

अच्छा, हो सकता है - लेकिन यह विशेषताएँ भी शामिल करना अच्छा है; -पी –

+0

हां, पर्याप्त है। –

0

आप this ब्लॉग के अनुसार एक छोटा सा हैक के माध्यम से NET कम्पैक्ट फ्रेमवर्क 2.0 और VS2008 के साथ उपयोग कर सकते हैं।

3

हां, वे सीएफ 3.5 में समर्थित हैं। यदि आप सीएफ 2.0 का उपयोग कर रहे हैं तो आपको एक्सटेंशन एट्रिब्यूट को परिभाषित करने की आवश्यकता होगी और फिर वे काम करेंगे।

// this is a definition of a 3.5 class for use in 2.0. If we upgrade to target CF3.5, we will need to remove it... 
    namespace System.Runtime.CompilerServices 
    { 
     public class ExtensionAttribute : Attribute { } 
    } 

namespace TestExtension 
{ 
    public static class Extensions 
    { 
     public static int TestMethod(this string value) 
     { 
      return value.ToString(); 
     } 
    } 
} 
संबंधित मुद्दे