الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Friend Assemblies

مغلق
بدأه محمد سامر أبو سلو في 12 ديسمبر 2007 · 0 رد · 613 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

Friend Assemblies

الـ Friend Assembly هو مجمع Assembly مسموح له باستخدام العناصر الموجودة في مجمع آخر والتي تم تعريفها باستخدام محدد الوصول Friend فإن قمت بتحديد مجمع ما في فيجول بايزيك كـ Friend Assembly لم يعد متوجبا تعريف العناصر والأنواع في ذلك المجمع باستخدام محدد الوصول Public كي تتم رؤيتهم من المجمعات الأخرى وتعتبر هذه التقنية مريحة في حالتين:

• عندما تقوم بفحص كود يعمل في مجمع مختلف ولكنه يحتاج للوصول إلى عناصر في المجمع الذي يتم فحصه تم تعريفهم باستخدام محدد الوصول Friend

• عندما تقوم بتطوير مكتبة فئات Class Library وهناك إضافات لتلك المكتبة موجودة في مجمعات مختلفة ولكنها تتطلب الوصول لعناصر في المجمعات الموجودة تم تعريفهم باستخدام محدد الوصول Friend

يمكنك استخدام الصفة InternalsVisibleToAttribute لتحديد واحدة أو أكثر من الـ friend assemblies لمجمع محدد. فمثلا يمكنك تضمين الصفة InternalsVisibleToAttribute في المجمع A وتحديد المجمع B كـ friend assembly فسيكون بإمكان المجمع B الوصول لجميع الأنواع والعناصر في المجمع A التي تم تعريفها باستخدام محدد الوصول Friend كما يظهر في المثال التالي

Imports System.Runtime.CompilerServices

<Assembly: InternalsVisibleTo("FriendAssembliesB")> 

' Friend class.
Friend Class FriendAssembliesA
	Public Sub Test()
		MsgBox("Friend Assemblies Sample Class")
	End Sub
End Class

' Public class with a Friend method.
Public Class FriendAssembliesClassA
	Friend Sub Test()
		MsgBox("Friend Assemblies Sample Method")
	End Sub
End Class

فجميع المجمعات التي يتم تعريفها بشكل واضح كـ Friend يمكنها الوصول إلى الأنواع والعناصر Friend فمثلا إن كان المجمع B هو Friend للمجمع A و المجمع C له مرجع إلى المجمع B فلن يكن لكلا المجمعين B و C حق الوصول للأنواع Friend في المجمع A

ويقوم المترجم بعمل تدقيقي أساسي لـ Friend Assemblies التي تم تمرير اسمها للصفة InternalsVisibleToAttribute فإن كان المجمع A يعرف المجمع B كـ Friend Assembly تكون قواعد التحقق كما يلي:

• إذا كان المجمع A يمتلك اسما قويا يجب على المجمع B أن يمتلك اسما قويا أيضا. فاسم الـ Friend Assembly الممرر إلى الصفة يجب أن يحتوي على اسم المجمع والمفتاح العام Public Key للاسم القوي Strong-Name Key الذي استخدم لتوقيع المجمع B. واسم الـ friend assembly الذي يتم تمريره للصفة InternalsVisibleToAttribute لا يمكن أن يكون الاسم القوي للمجمع B حيث أنك لا تضمن رقم النسخة للمجمع والثقافة والبناء architecture و ورمز المفتاح العام

• وإن لم يمتلك المجمع A اسما قويا يجب أن يحتوي اسم الـ Friend Assembly على اسم المجمع فقط

• وإن كان للمجمع B اسما قويا يجب أن تحدد الـ strong-name key للمجمع B باستخدام خصائص المشروع أو عن طريق سطر الأوامر باستخدام خيار المترجم /Keyfile

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة