Comment héritez-vous de StringBuilder dans vb.net?
-
05-07-2019 - |
Question
Je souhaite ajouter mon propre membre à la classe StringBuilder, mais lorsque je vais le créer, IntelliSense ne l'apporte pas.
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
Est-ce même possible? merci
La solution
StringBuilder
est NotInheritable
(autrement dit scellé
en C #), vous ne pouvez donc pas en extraire. Vous pouvez essayer de placer StringBuilder
dans votre propre classe ou envisager d'utiliser méthodes d'extension à la place.
Autres conseils
Non, StringBuilder est un classe NotInheritable . Vous pouvez essayer de wrapper une instance de StringBuilder , mais peut ne pas en hériter. Vous pouvez également utiliser les méthodes d'extension , si vous utilisez .NET. 3.5.
C'est ce que j'ai proposé aux curieux:
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
StringBuilder est une classe scellée ... donc l'héritage n'est pas autorisé.
StringBuilder est scellé. Vous ne pouvez pas en hériter.
Si vous utilisez une version antérieure de .Net, vous pouvez écrire à la base la même classe StringBuilderExtensions, puis appeler explicitement la méthode statique.
Avec .Net 3.5: myStringBuilder.MyExtensionMethod (etc ...);
Pre-.NET 3.5: StringBuilderExtensions.MyExtensionMethod (myStringBuilder, etc ...);