Wie Sie Stringbuilder in vb.net erben?
-
05-07-2019 - |
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
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...);