التجميعات الصديقة (C# و Visual Basic)
التجميع الصديق هو تجميع الذي يمكن الوصول إلى تجميع صديق آخرصديق (Visual Basic) أو أنواع و أعضاء (C#) داخلي . إذا تعرفت على تجميع باسم تجميع صديق لا يتوجب عليك تحديد الأنواع والأعضاء ك (عام) من أجل الوصول إليها عن طريق التجميعات الأخرى. يكون هذا ملائماً خاصةً في السيناريوهات التالية:
أثناء اختبار الوحدة، عند تشغيل اختبار التعليمات البرمجية في تجميع منفصلة ولكن تتطلب الوصول للأعضاء في التجميع الذي يتم اختباره التي تحمل علامة Friend (Visual Basic) أو internal (C#).
عندما تقوم بتطوير مكتبة فئة و إضافات المكتبة موجودة في تجميعات منفصلة ولكن تتطلب الوصول إلى أعضاء في التجميعات الموجودة التي تحمل علامة Friend (Visual Basic) أو internal (C#).
ملاحظات
يمكنك إستخدام السمة InternalsVisibleToAttribute لتعريف واحد أو أكثر من التجميعات الصديقة للتجميع المعطى. يستخدم المثال التالي السمةInternalsVisibleToAttribute في التجميع A و يحدد مجموعة AssemblyB كـ التجميع صديق. يتيح هذا التجميع AssemblyB الوصول إلى كافة أنواع و صواب في التجميع التي تحمل علامة Friend (Visual Basic) أو internal (C#).
ملاحظة
عند تجميع تجميع (التجميع AssemblyB) التي سيتم الوصول إلى أنواع داخلي أو داخلي أعضاء التجميع آخر (التجميع A ) ، يجب تحديد اسم ملف الإخراج (.exe أو .dll) بشكل صريح بإستخدام /out صواب. هذا مطلوب لأنه لا يحتوي على المحول البرمجي إنشاء اسم التجميع يقوم ببناء في الوقت هو تضمين بعد إلى مراجع خارجية. لمزيد من المعلومات، راجع / السحب (@) و / السحب (Visual Basic).
Imports System.Runtime.CompilerServices
Imports System
<Assembly: InternalsVisibleTo("AssemblyB")>
' Friend class.
Friend Class FriendClass
Public Sub Test()
Console.WriteLine("Sample Class")
End Sub
End Class
' Public class with a Friend method.
Public Class ClassWithFriendMethod
Friend Sub Test()
Console.WriteLine("Sample Method")
End Sub
End Class
using System.Runtime.CompilerServices;
using System;
[assembly: InternalsVisibleTo("AssemblyB")]
// The class is internal by default.
class FriendClass
{
public void Test()
{
Console.WriteLine("Sample Class");
}
}
// Public class that has an internal method.
public class ClassWithFriendMethod
{
internal void Test()
{
Console.WriteLine("Sample Method");
}
}
التجميعات التي تحددها بشكل صريح كأصدقاء يمكنها الوصول إلى Friend (Visual Basic) أو (C#) أنواع و أعضاء internal. على سبيل المثال، إذا كان التجميع B صديق التجميع A و التجميع التجميع مراجع C B, C ليس لدى وصول صواب Friend (Visual Basic) أو internal أنواع (C#) في أ
المحول البرمجي ينفذ بعض التحقق من الصحة الأساسية من اسم التجميع صديق الذي تم تمريره إلى السمةInternalsVisibleToAttribute. في حالة التجميع A صرحت ب B كاسم تجميع صديق ، قواعد التحقق من صحة كما يلي:
في حالة التجميع A مسمى باسم قوي ، التجميع B يجب أيضاً قوي التسمية. اسم التجميع الصديق التي يتم تمريره إلى السمة يجب أن تتألف من اسم التجميع والمفتاح العمومي لمفتاح قوي الاسم المستخدم في توقيع التجميع B .
اسم التجميع صديق الذي تم تمريره للسمة InternalsVisibleToAttribute لا يمكن أن تكون الاسم القوي للتجميع B : لا تقم بتضمين إصدار التجميع الثقافة هندسة أو رمز مفتاح عام.
إذا كان التجميع A ليست مسماة باسم قوي, يجب أن يتكون اسم التجميع صديق من اسم التجميع. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء تجميعات صديق غير الموقعة (C# و Visual Basic).
في حالة كون التجميع B قوي الاسم ، يجب تحديد المفتاح الاسم القوي للتجميع B بإستخدام إعدادات المشروع أو خيار المحول البرمجي خط الأوامر /keyfile لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء تجميعات صديقة موقعة (C# و Visual Basic).
فئة StrongNameIdentityPermission توفر القدرة على مشاركة أنواع مع الاختلافات التالية:
StrongNameIdentityPermission ينطبق الى نوع فردي ، أثناء تطبيق تجميع صديق لللتجميع بالكامل.
إذا كان هناك مئات الأنواع في التجميع A التي تريدها إلى تجعلها مشتركة مع التجميع B ، عليك إضافة StrongNameIdentityPermission إليهم جميعاً. إذا إستخدمت تجميع صديق تحتاج فقط لتعريف علاقة المتغير الصديق مرة واحدة.
إذا كنت تستخدم StrongNameIdentityPermission ، الأنواع التي تريدها مشتركة يجب أن تعلن أنها عامة. إذا كنت تستخدم تجميع صديق ، الأنواع المشتركة يتم تعريفها كـ Friend (Visual Basic) أو internal (C#).
For معلومات حول how إلى الوصول an تجميع's Friend (Visual أساسى) أو internal (C#) أنواع و وظائف من a وحدة نمطية? ملف (a ملف مع the . netmodule ملحق), see /moduleassemblyname (Visual أساسى) و /moduleassemblyname (C#).
راجع أيضًا:
المهام
كيفية القيام بما يلي: إنشاء تجميعات صديق غير الموقعة (C# و Visual Basic)
كيفية القيام بما يلي: إنشاء تجميعات صديقة موقعة (C# و Visual Basic)
المرجع
التجميعات ومخزن التجميع العمومي المؤقت (C# و Visual Basic)