Frage

Ich möchte mein eigenes Element der Klasse String hinzuzufügen, aber wenn ich zu erstellen gehen, um es IntelliSense bringt es nicht auf.

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

Ist es überhaupt möglich? Dank

War es hilfreich?

Lösung

StringBuilder ist NotInheritable (aka sealed in C #), so dass Sie kann daraus nicht abgeleitet werden. Sie könnten versuchen, StringBuilder in Ihrer eigenen Klasse Einwickeln oder betrachten Erweiterungsmethoden rel="nofollow statt.

Andere Tipps

Nein, String ist ein NotInheritable Klasse. Sie könnten versuchen, eine String Instanz Einwickeln, kann aber ‚t von ihm erben. Sie können auch verwenden Erweiterungsmethoden , wenn Sie .NET verwenden 3.5.

Das ist, was ich kam mit, für diejenigen, die neugierig sind:

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

String eine versiegelte Klasse ist ... so Vererbung ist nicht erlaubt.

String ist versiegelt. Sie können nicht von ihm erben.

Wenn Sie eine frühere Version von .NET verwenden, können Sie im Grunde die gleiche StringBuilderExtensions Klasse schreiben und dann stattdessen die statische Methode explizit aufrufen.

Mit .Net 3.5: myStringBuilder.MyExtensionMethod(etc...);

Pre- .Net 3.5: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top