02-10-12, 07:30 PM
كاتب الموضوع : samerselo
يقدم فيجول بايزيك 2008 الطرائق المُوَسِّعة Extension Methods التي تمكن المطور من إضافة وظائف مخصصة لأنواع البيانات المعرفة سابقا من دون إنشاء نوع جديد مشتق. مما يمكنك من كتابة طريقة يمكن أن تستدعى كما لو كانت من ضمن النوع الموجود. والطريقة الموسعة يمكن أن تكون إجراء Sub أو وظيفة Function ولا يمكن أن تكون خاصية Property أو حقل Field أو حدث Event وجميع الطرائق الموسعة يجب تعليمها بالصفة <Extension()> من مجال الأسماء System.Runtime.CompilerServices وتحدد الوسيطة الأولى في الطرائق الموسعة نوع البيانات المراد الذي سيطلق الطريقة.في المثال التالي يتم تحديد الطريقة Print لتوسيع نوع البيانات string والتي تستخدم Console.WriteLine لإظهار النص حيث يؤسس الوسيط aString أن الطريقة Print توسع الفئة String
كود :
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()> _
Public Sub Print(ByVal aString As String)
Console.WriteLine(aString)
End Sub
End Moduleكود :
Imports ConsoleApplication2.StringExtensions
Module Module1
Sub Main()
Dim example As String = "Hello"
' Call to extension method Print.
example.Print()
' Call to instance method ToUpper.
example.ToUpper()
example.ToUpper.Print()
End Sub
End Moduleكود :
<Extension()> _
Public Sub PrintAndPunctuate(ByVal aString As String, _
ByVal punc As String)
Console.WriteLine(aString & punc)
End Subويظهر المثال التالي تحديد واستدعاء Print و PrintAndPunctuate واستيراد System.Runtime.CompilerServices الذي يمكن من الوصول إلى الصفة التي تحدد الطرائق الموسعة
كود :
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()> _
Public Sub Print(ByVal aString As String)
Console.WriteLine(aString)
End Sub
<Extension()> _
Public Sub PrintAndPunctuate(ByVal aString As String, _
ByVal punc As String)
Console.WriteLine(aString & punc)
End Sub
End Moduleكود :
Imports ConsoleApplication2.StringExtensions
Module Module1
Sub Main()
Dim example As String = "Example string"
example.Print()
example = "Hello"
example.PrintAndPunctuate(".")
example.PrintAndPunctuate("!!!!")
End Sub
End Module