¿Cómo se hereda StringBuilder en vb.net?
-
05-07-2019 - |
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
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 ...);