مشاركة عبر


التجميعات الصديقة (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)

المرجع

InternalsVisibleToAttribute

StrongNameIdentityPermission

التجميعات ومخزن التجميع العمومي المؤقت (C# و Visual Basic)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

دليل البرمجة Visual Basic