Pregunta

Quiero agregar mi propio miembro a la clase StringBuilder, pero cuando voy a crearlo, IntelliSense no lo menciona.

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

¿Es incluso posible? gracias

¿Fue útil?

Solución

StringBuilder es NotInheritable (también conocido como sellado en C #) por lo que no puede derivar de él. Puede probar envolviendo StringBuilder en su propia clase o considere usar métodos de extensión en su lugar.

Otros consejos

No, StringBuilder es un NotInheritable class. Puede intentar envolver una StringBuilder instancia, pero puede no heredar de ella También puede usar métodos de extensión , si está usando .NET 3.5.

Esto es lo que se me ocurrió, para aquellos que tienen curiosidad:

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 es una clase sellada ... por lo que no se permite la herencia.

StringBuilder está sellado. No puedes heredar de él.

Si está utilizando una versión anterior de .Net, puede escribir básicamente la misma clase StringBuilderExtensions y luego llamar explícitamente al método estático.

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top