2010-02-17 17 views
11

मैं सोच रहा था कि विजुअल स्टूडियो 2005 और 2.0 ढांचे का उपयोग करके विस्तार विधियों को बनाने का कोई तरीका है या नहीं?क्या 2.0 फ्रेमवर्क के साथ विस्तार विधियां बनाना संभव है?

public static class StringExtensions 
{ 
    public static void SomeExtension(this String targetString) 
    { 

    } 
} 

यदि ऐसा करने का कोई तरीका नहीं है, तो समकक्ष क्या होगा? बस पुस्तकालय वर्ग के किसी प्रकार में स्थिर तरीकों का निर्माण?

+0

क्या आप विजुअल स्टूडियो 2008 या 2005 का उपयोग कर रहे हैं? –

+0

मैं वीएस2005 – DevDemon

+2

का उपयोग कर रहा हूं तो आप भाग्य से बाहर हैं। –

उत्तर

18

नेट फ्रेमवर्क 2.0 का उपयोग करके एक्सटेंशन विधियां बना सकते हैं, यदि आप सी # 3.0 कंपाइलर और विजुअल स्टूडियो 2008 या अधिक का उपयोग करते हैं।

namespace System.Runtime.CompilerServices 
{ 
    public class ExtensionAttribute : Attribute { } 
} 

मूल रूप से आप Core.dll में extensionAttribute (नेट 3.5 +) की घोषणा फिर से अपनी परियोजना में, की जरूरत है:

पकड़ आप अपने प्रोजेक्ट के लिए इस कोड को जोड़ने के लिए होता है।

+0

ठीक है धन्यवाद, इसलिए यह वीएस -2008 और 2.0 के साथ संभव है, लेकिन वीएस2005 और 2.0 नहीं, धन्यवाद! – DevDemon

3

नहीं, यह नेट 2.0 में संभव नहीं है (सी # 3.0 कंपाइलर का उपयोग किए बिना)। तुम बस स्थिर तरीकों कि बिल्कुल वही बात फिर भी ऐसा बना सकते हैं:

public static class StringExtensions 
{ 
    public static void SomeExtension(String targetString) 
    { 
     // Do things 
    } 
} 

// Example use: 
StringExtensions.SomeExtension(targetString); 

वास्तविकता विस्तार तरीकों में बस ऊपर लेखन की एक आशुलिपि तरीका है।

+0

यह ** ** ** संभव है ... –

+0

@Andreas क्या, यदि आप सी # 3.0 कंपाइलर का उपयोग करते हैं? वह * निश्चित रूप से * धोखा दे रहा है। – Justin

+0

लेकिन संभव है ... तो आपका उत्तर गलत है। यह सच होगा अगर यह कहता है कि .नेट 2.0 कंपाइलर का उपयोग करना संभव नहीं है –

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