2008-10-07 13 views
6

मैं अपने स्वयं के सदस्य को स्ट्रिंगबिल्डर वर्ग में जोड़ना चाहता हूं, लेकिन जब मैं इसे बनाने के लिए जाता हूं IntelliSense इसे नहीं लाता है।आप vb.net में स्ट्रिंगबिल्डर को कैसे प्राप्त करते हैं?

public class myStringBuilder() 
    Inherits System.Text.[StringBuilder should be here] 
    .... 
end class 

क्या यह भी संभव है? धन्यवाद

उत्तर

16

StringBuilderNotInheritable (उर्फ sealed सी # में) ताकि आप इससे प्राप्त नहीं कर सकें। आप अपनी खुद की कक्षा में StringBuilder लपेटने का प्रयास कर सकते हैं या इसके बजाय extension methods का उपयोग करने पर विचार कर सकते हैं।

+0

क्या किसी को पता है कि यह क्यों मुहरबंद है? – oleks

+0

@ एलेक्स: शायद इसलिए क्योंकि यह एपीआई का परीक्षण और सत्यापन करने के लिए पैसे खर्च करता है और इसे सील करने से यह लागत कम हो जाती है। –

3

नहीं, StringBuilderNotInheritable कक्षा है। आप StringBuilder उदाहरण लपेटने का प्रयास कर सकते हैं, लेकिन इससे प्राप्त नहीं हो सकते हैं। यदि आप .NET 3.5 का उपयोग कर रहे हैं, तो आप extension methods का भी उपयोग कर सकते हैं।

+0

धन्यवाद, मैं लगा कि वही था जो मुझे करना है। – Anders

1

स्ट्रिंगबिल्डर एक मुहरबंद वर्ग है ... इसलिए विरासत की अनुमति नहीं है।

1

स्ट्रिंगबिल्डर को सील कर दिया गया है। आप इससे प्राप्त नहीं कर सकते हैं।

1

यदि आप .Net के पहले संस्करण का उपयोग कर रहे हैं, तो आप मूल रूप से एक ही स्ट्रिंगबिल्डर एक्सटेंशन श्रेणी लिख सकते हैं और उसके बाद स्पष्ट रूप से स्थिर विधि को कॉल कर सकते हैं।

नेट 3.5 के साथ: myStringBuilder.MyExtensionMethod(etc...);

पूर्व नेट 3.5: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

2

यह है कि मैं क्या के साथ आया था, जो उन लोगों के उत्सुक हैं के लिए है:

Imports System.Runtime.CompilerServices 
Module sbExtension 
    <Extension()> _ 
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _ 
            ByVal format As String, _ 
            ByVal arg0 As Object) 
     oStr.AppendFormat("{0}{1}", String.Format(format, arg0), ControlChars.NewLine) 
    End Sub 
    <Extension()> _ 
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _ 
            ByVal format As String, ByVal arg0 As Object, _ 
            ByVal arg1 As Object) 
     oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1), ControlChars.NewLine) 
    End Sub 
    <Extension()> _ 
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _ 
            ByVal format As String, _ 
            ByVal arg0 As Object, _ 
            ByVal arg1 As Object, _ 
            ByVal arg2 As Object) 
     oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1, arg2), ControlChars.NewLine) 
    End Sub 
    <Extension()> _ 
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _ 
            ByVal format As String, _ 
            ByVal ParamArray args() As Object) 
     oStr.AppendFormat("{0}{1}", String.Format(format, args), ControlChars.NewLine) 
    End Sub 
End Module 
+1

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मैंने कोड अपडेट किया है (और इसे सी # पर पोर्ट किया है): http://stackoverflow.com/questions/1272534/how-do-i-port-an-extension-in-vb- शुद्ध करने के लिए ग/1272544 – Anders

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

  • कोई संबंधित समस्या नहीं^_^