Sestavení přítele (C# a Visual Basic)
A sestavení přítele je sestavení přístup jiného sestavení přítele (Visual Basic) nebo vnitřní typy (C#) a členy.Pokud identifikovat jako přítele sestavení sestavení, máte již označení typů a členy jako veřejné, aby je přístupný ostatních sestaveních.To je zvláště vhodné v následujících scénářích:
Během testování, při spuštění testovací kód v samostatných sestavení ale vyžaduje přístup k sestavení testovány, které jsou označeny jako členové Friend (Visual Basic) nebo internal (C#).
Když vyvíjíte knihovna tříd a dodatky ke knihovně jsou obsaženy v samostatném sestavení, ale vyžadují přístup pro členy v existující sestavení, které jsou označeny jako Friend (Visual Basic) nebo internal (C#).
Poznámky
Můžete použít InternalsVisibleToAttribute atributu určit jedno nebo více sestavení přítele v daném sestavení.V následujícím příkladu InternalsVisibleToAttribute v sestavení a atribut a určuje sestavení AssemblyB jako přítele sestavení.To umožňuje sestavení AssemblyB přístup do všech typů a členy v sestavení, které jsou označeny jako Friend (Visual Basic) nebo internal (C#).
[!POZNÁMKA]
Při sestavování sestavení (sestavení AssemblyB), bude přístup k interní typy nebo vnitřní členy jiného sestavení (sestavení a), je nutné explicitně zadat název výstupního souboru (EXE nebo DLL) pomocí /out volba kompilátoru.To není nutná, protože kompilátor není dosud generoval název sestavení, které vytváří v době, kdy je vazba na externí odkazy.Další informace naleznete v tématu /out (C#) a / 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");
}
}
Pouze sestavení, které výslovně zadáte jako přátelé přístup Friend (Visual Basic) nebo internal typy (C#) a členy.Například je-li sestavení b přítele a sestavení a sestavení odkazy sestavení C, B, C nemá přístup k Friend (Visual Basic) nebo internal (C#) typy A.
Kompilátor provádí základní ověření název sestavení přítele předány InternalsVisibleToAttribute atributu.Pokud shromáždění a prohlašuje b jako přítele sestavení, ověřovací pravidla jsou následující:
Pokud shromáždění a je silně pojmenované sestavení b musí také mít silné názvy.Název sestavení přítele, který je předán do atributu musí obsahovat název sestavení a veřejného klíče silného názvu klíče, který je použit k podepsání sestavení b.
Název sestavení přítele, který je předán InternalsVisibleToAttribute atribut nemůže být silný název sestavení b: neobsahují verzi sestavení, kultura, architektura nebo token veřejného klíče.
Pokud shromáždění a není silný název, název sestavení přítele by měl obsahovat pouze název sestavení.Další informace naleznete v tématu Jak: vytvoření nepodepsané přítele sestavení (C# a Visual Basic).
Pokud shromáždění b je silný název, je nutné zadat klíč silného názvu pro sestavení b pomocí nastavení projektu nebo příkazového řádku /keyfile volba kompilátoru.Další informace naleznete v tématu Jak: Vytvoření podepsaného přítele sestavení (C# a Visual Basic).
StrongNameIdentityPermission Třídy také umožňuje sdílet typy s následující rozdíly:
StrongNameIdentityPermissionplatí pro jednotlivé typu, při sestavení přítele platí celá sestava.
Pokud jsou stovky typů v sestavení a , kterou chcete sdílet s sestavení b, je nutné přidat StrongNameIdentityPermission na všechny.Pokud používáte sestavení přítele, stačí pouze jednou deklarovat vztah přítele.
Používáte-li StrongNameIdentityPermission, typy, které chcete sdílet nutné deklarovat jako public.Pokud používáte sestavení přítele, sdílené typy jsou deklarovány jako Friend (Visual Basic) nebo internal (C#).
Informace o získání přístupu sestavení Friend (Visual Basic) nebo internal druhů (C#) a metody ze souboru modulu (soubor s.přípona netmodule), viz /moduleassemblyname (Visual Basic) a /moduleassemblyname (C#).
Viz také
Úkoly
Jak: vytvoření nepodepsané přítele sestavení (C# a Visual Basic)
Jak: Vytvoření podepsaného přítele sestavení (C# a Visual Basic)
Referenční dokumentace
Koncepty
Sestavení a globální mezipaměti sestavení (C# a Visual Basic)