Pergunta

Eu quero adicionar meu próprio membro para a classe StringBuilder, mas quando vou para criá-lo IntelliSense não trazê-lo.

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

Será que é mesmo possível? graças

Foi útil?

Solução

StringBuilder é NotInheritable (aka sealed em C #) para que você não pode derivar a partir dele. Você poderia tentar envolver StringBuilder em sua própria classe ou considere o uso métodos de extensão em seu lugar.

Outras dicas

Não, StringBuilder é um classe NotInheritable. Você poderia tentar envolver um StringBuilder exemplo, mas pode 't herdam dele. Você também pode usar métodos de extensão , se você estiver usando .NET 3.5.

Isto é o que eu vim com, para aqueles que estão curiosos:

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 é uma classe selada ... então herança não é permitido.

StringBuilder está selado. Você não pode herdar a partir dele.

Se você estiver usando uma versão anterior do NET, você pode escrever, basicamente, a mesma classe StringBuilderExtensions e, em seguida, chamar explicitamente o método estático em seu lugar.

Com o .NET 3.5: myStringBuilder.MyExtensionMethod(etc...);

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top