StringBuilder 클래스에 내 멤버를 추가하고 싶지만 IntelliSense를 만들면 생성되지 않습니다.당신은 어떻게 vb.net에서 StringBuilder를 상속합니까?
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
심지어 가능합니까? 감사합니다
StringBuilder 클래스에 내 멤버를 추가하고 싶지만 IntelliSense를 만들면 생성되지 않습니다.당신은 어떻게 vb.net에서 StringBuilder를 상속합니까?
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
심지어 가능합니까? 감사합니다
StringBuilder
은 NotInheritable
(C#의 경우 sealed
)이므로 파생 할 수 없습니다. 자신의 수업에 StringBuilder
을 입력하거나 extension methods을 대신 사용해보세요.
아니요, StringBuilder은 NotInheritable입니다. StringBuilder 인스턴스를 래핑 할 수는 있지만 상속 할 수는 없습니다. .NET 3.5를 사용하는 경우 extension methods을 사용할 수도 있습니다.
고마워, 난 그 생각 내가해야 할 일 이었어. – Anders
StringBuilder는 봉인 된 클래스이므로 상속이 허용되지 않습니다.
StringBuilder가 봉인되었습니다. 당신은 그것으로부터 상속받을 수 없습니다.
이전 버전의 .Net을 사용하는 경우 기본적으로 동일한 StringBuilderExtensions 클래스를 작성하고 대신 명시 적으로 정적 메서드를 호출 할 수 있습니다. myStringBuilder.MyExtensionMethod(etc...);
사전 닷넷 3.5 : 닷넷 3.5으로
이 StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);
이 내가 궁금해하는 사람들을 위해, 해낸 것입니다 :
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
나는 이것이 오래된 게시물 인 것을 알고 있지만 코드를 업데이트했다. (그리고 C#으로 포팅했다.) http://stackoverflow.com/questions/1272534/how-do-i-port-an-extension-in-vb- net-to-c/1272544 – Anders
봉인 된 이유를 아는 사람이 있습니까? – oleks
@oleks : API를 테스트하고 유효성을 검사하는 데 비용이 들기 때문에 아마도이 비용이 줄어 듭니다. –