practices net example best vb.net stringbuilder

example - ¿Cómo heredas StringBuilder en vb.net?



stringbuilder methods in c# (6)

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

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

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

¿Es posible? Gracias


StringBuilder es una clase sellada ... por lo que la herencia no está permitida.


StringBuilder está sellado. No puedes heredar de eso.


Esto es lo que se me ocurrió, para aquellos que son 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 es NotInheritable (también conocido como C #) por lo que no puede derivarse de él. Puede intentar envolver StringBuilder en su propia clase o considerar usar métodos de extensión en su lugar.


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