كيف يمكنك أن ترث ب StringBuilder في vb.net؟
-
05-07-2019 - |
سؤال
واريد ان اضيف عضو بلدي لفئة ب StringBuilder، ولكن عندما أذهب لإنشائه التحسس لا يحقق ذلك.
public class myStringBuilder()
Inherits System.Text.[StringBuilder should be here]
....
end class
هل من الممكن؟ بفضل
نصائح أخرى
لا، ب StringBuilder هو <ل أ href = "http://msdn.microsoft.com/en-us/library/h278d2d4.aspx" يختلط = "نوفولو noreferrer"> الطبقة NotInheritable. قد تتمكن من محاولة التفاف على ب 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. لا يمكنك ترث منه.
إذا كنت تستخدم إصدار سابق من صافي، يمكنك كتابة أساسا نفس الفئة StringBuilderExtensions ثم يدعو صراحة أسلوب ثابت بدلا من ذلك.
ومع صافي 3.5: myStringBuilder.MyExtensionMethod(etc...);
ما قبل الصافية 3.5: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);