Inhaltsverzeichnis:
Definition - Was bedeutet Freundschaftsversammlung?
Eine Friend-Assembly in C # verweist auf die .NET-Assembly, die auf die Mitglieder einer anderen Assembly zugreifen kann. Mitglieder in einer Assembly, auf die über die Freundschaftsassembly zugegriffen wird, müssen als gekennzeichnet werden
intern.
Friend-Assemblys werden in Szenarien verwendet, in denen auf interne Klassen und Member in einer Assembly von einer anderen bestimmten Assembly aus zugegriffen werden muss. Es ermöglicht zwei bestimmten Assemblys, Mitglieder oder Funktionen gemeinsam zu nutzen, ohne sie öffentlich zu machen.
Friend-Assemblys werden auch beim Komponententest verwendet, bei dem die dem Testcode zugrunde liegende Assembly auf die Mitglieder zugreifen muss, die in der zu testenden Assembly als intern gekennzeichnet sind. Es ist nützlich bei der Entwicklung von Klassenbibliotheken, die Ergänzungen erfordern, die in separaten Assemblys enthalten sind und auf Member in vorhandenen Assemblys zugreifen müssen.
Techopedia erklärt Friend Assembly
Durch Markieren von Mitgliedern einer Klasse als intern sind sie für andere Klassen in derselben Assembly sichtbar, für Klassen, die sich außerhalb der Assembly befinden, jedoch privat. Um von einer Freundschaftsassembly aus auf die internen Mitglieder zuzugreifen, muss der Name der Freundschaftsassembly mit dem Attribut InternalsVisibleToAttribute in der Assembly angegeben werden, in der die internen Mitglieder definiert sind. Die Freundschaftsversammlung kann nicht auf private Typen und private Mitglieder zugreifen.
Beispielsweise kann InternalsVisibleToAttribute in Assembly X verwendet werden, um Assembly Y als Friend-Assembly anzugeben, sodass Assembly Y auf alle Typen und Mitglieder von Assembly X zugreifen kann, die als intern markiert sind.
Die folgenden Richtlinien beziehen sich auf die Entwicklung von Friend-Assemblys:
- Bei Verwendung signierter Assemblys kann mit dem Tool 'sn.exe' der öffentliche Schlüssel abgerufen werden, der an das Attribut übergeben werden muss, das die Friend-Assembly angibt
- Beim Kompilieren einer Friend-Assembly, die auf interne Mitglieder einer anderen Assembly zugreift, muss die Compileroption (/ out) mit dem Namen der Ausgabedatei (.exe oder .dll) festgelegt werden.
- Es muss explizit jede Assembly angegeben werden, die ein Freund für die Assembly sein muss, auf die sie Zugriff benötigt
- Es wird empfohlen, Friend-Assemblys zu verwenden, ohne die Kapselungsregeln zu verletzen