2008-10-07 2 views

답변

16

StringBuilderNotInheritable (C#의 경우 sealed)이므로 파생 할 수 없습니다. 자신의 수업에 StringBuilder을 입력하거나 extension methods을 대신 사용해보세요.

+0

봉인 된 이유를 아는 사람이 있습니까? – oleks

+0

@oleks : API를 테스트하고 유효성을 검사하는 데 비용이 들기 때문에 아마도이 비용이 줄어 듭니다. –

1

StringBuilder는 봉인 된 클래스이므로 상속이 허용되지 않습니다.

1

StringBuilder가 봉인되었습니다. 당신은 그것으로부터 상속받을 수 없습니다.

1

이전 버전의 .Net을 사용하는 경우 기본적으로 동일한 StringBuilderExtensions 클래스를 작성하고 대신 명시 적으로 정적 메서드를 호출 할 수 있습니다. myStringBuilder.MyExtensionMethod(etc...);

사전 닷넷 3.5 : 닷넷 3.5으로

StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

2

이 내가 궁금해하는 사람들을 위해, 해낸 것입니다 :

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 
+1

나는 이것이 오래된 게시물 인 것을 알고 있지만 코드를 업데이트했다. (그리고 C#으로 포팅했다.) http://stackoverflow.com/questions/1272534/how-do-i-port-an-extension-in-vb- net-to-c/1272544 – Anders

관련 문제