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

Était-ce utile?

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 ...);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top