Freund Versammlung

Definition - Was bedeutet Friend Assembly?

Eine Friend-Assembly in C # bezieht sich auf die .NET-Assembly, die auf die Mitglieder einer anderen Assembly zugreifen kann. Mitglieder in einer Assembly, auf die über eine Friend-Assembly zugegriffen wird, müssen als markiert sein
intern.

Friend-Assemblys werden in Szenarien verwendet, in denen von einer anderen bestimmten Assembly aus auf interne Klassen und Mitglieder in einer Assembly 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 Elemente zugreifen muss, die in der zu testenden Assembly als intern markiert sind. Dies ist nützlich bei der Entwicklung von Klassenbibliotheken, für die Ergänzungen in separaten Assemblys erforderlich sind, die auf Mitglieder in vorhandenen Assemblys zugreifen müssen.

Technische.me erklärt die Versammlung der Freunde

Durch Markieren von Mitgliedern einer Klasse als intern sind sie für andere Klassen innerhalb derselben Assembly sichtbar, für Klassen, die sich außerhalb der Assembly befinden, jedoch privat. Um von einer Friend-Assembly auf die internen Mitglieder zuzugreifen, sollte der Name der Friend-Assembly mit dem Attribut InternalsVisibleToAttribute in der Assembly angegeben werden, in der die internen Mitglieder definiert sind. Die Friend-Assembly 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.

Es folgen die Richtlinien für die Entwicklung von Freundversammlungen:

  • 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 ist erforderlich, jede Assembly explizit anzugeben, die für die Assembly, auf die sie Zugriff benötigt, befreundet sein muss
  • Es wird empfohlen, Friend-Assemblys zu verwenden, ohne die Kapselungsregeln zu verletzen

Diese Definition wurde im Kontext von C # geschrieben