2010-01-05 11 views
12

संभव डुप्लिकेट:
Can I add extension methods to an existing static class?एक स्थिर वर्ग पर विस्तार विधियां?

मैं जानता हूँ कि मैं एक वर्ग का विस्तार करने के लिए नीचे दिए गए कर सकते हैं। मेरे पास एक स्थिर वर्ग है जिसे मैं विस्तारित करना चाहता हूं। मैं यह कैसे कर सकता हूँ? मैं ClassName.MyFunc()

static public class SomeName 
{ 
    static public int HelperFunction(this SomeClass v) 
+2

http://stackoverflow.com/questions/249222/can-i-add-extension-methods-to-an-existing-static-class –

उत्तर

15

आप क्योंकि विस्तार तरीकों केवल प्रकार instantiable पर लागू होते हैं और स्थिर कक्षाओं instantiated नहीं किया जा सकता है स्थिर कक्षाओं पर विस्तार तरीकों नहीं हो सकता।

चेक इस कोड को ..

public static bool IsEmail(this string email) 
    { 
     if (email != null) 
     { 
      return Regex.IsMatch(email, "EmailPattern"); 
     } 

     return false; 
    } 

IsEmail (करने के लिए सबसे पहले पैरामीटर) विस्तार प्रकार उदाहरण और न सिर्फ प्रकार ही है। आपके पास स्थिर प्रकार का उदाहरण कभी नहीं हो सकता है।

10

आप सी # में स्थिर कक्षाओं का विस्तार नहीं कर सकते हैं। एक्सटेंशन विधियां स्थिर विधियों को परिभाषित करके काम करती हैं जो कि किसी प्रकार के उदाहरण विधियों के रूप में दिखाई देती हैं। आप एक विस्तार विधि को परिभाषित नहीं कर सकते जो स्थिर वर्ग को बढ़ाता है।

0

आप अपनी स्थैतिक कक्षा को singleton में बदलना चाहेंगे। फिर कक्षा का केवल एक उदाहरण होगा। और आप इस पर विस्तार विधियों का उपयोग कर सकते हैं क्योंकि यह एक उदाहरण है।

यह प्रदान किया जाता है कि आपके पास कक्षा के स्रोत कोड तक पहुंच है।

+1

क्या हम इसके लिए स्पष्टीकरण की उम्मीद कर सकते हैं (मुझे सिंगलटन से नफरत है)? –

+8

ठीक है, आप "मैं सिंगलटन से नफरत करता हूं" के सिर्फ एक उदाहरण की अपेक्षा नहीं करता, क्या आप? –

+0

कोई भी मुझे कैसे हटा सकता है मैं सिंगलटन से नफरत करता हूं मैं सिंगलटन टिप्पणी से नफरत करता हूं? –

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