vb.net에서 StringBuilder를 어떻게 상속합니까?
-
05-07-2019 - |
문제
나는 내 멤버를 StringBuilder 클래스에 추가하고 싶지만, 내가 그것을 만들 때 지능적인 것은 그것을 가져 오지 않습니다.
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
가능합니까? 감사해요
해결책
StringBuilder
~이다 NotInheritable
(일명 sealed
C#)에서는 파생 할 수 없습니다. 포장을 시도 할 수 있습니다 StringBuilder
자신의 수업에서 또는 사용을 고려하십시오 확장 방법 대신에.
다른 팁
아니, StringBuilder a 불가능합니다 수업. 당신은 포장을 시도 할 수 있습니다 StringBuilder 예를 들어, 물려받을 수 없습니다. 당신은 또한 사용할 수 있습니다 확장 방법, .NET 3.5를 사용하는 경우.
이것은 내가 생각해 낸 것입니다. 궁금한 사람들을 위해 :
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는 봉인 된 클래스입니다 ... 상속은 허용되지 않습니다.
StringBuilder가 봉인되었습니다. 당신은 그것으로부터 상속 할 수 없습니다.
이전 버전의 .NET을 사용하는 경우 기본적으로 동일한 StringBuildErextensions 클래스를 작성한 다음 대신 정적 메소드를 명시 적으로 호출 할 수 있습니다.
.NET 3.5 : myStringBuilder.MyExtensionMethod(etc...);
Pre- .NET 3.5 : StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);
제휴하지 않습니다 StackOverflow