Heim > Backend-Entwicklung > C++ > Wie kann ich eine C#-Äquivalenz mit dem „Friend'-Schlüsselwort von C erreichen?

Wie kann ich eine C#-Äquivalenz mit dem „Friend'-Schlüsselwort von C erreichen?

Mary-Kate Olsen
Freigeben: 2024-12-31 21:59:11
Original
330 Leute haben es durchsucht

How Can I Achieve C# Equivalence to C  's

C#-Äquivalent des Schlüsselworts „Friend“

In C können Sie das Schlüsselwort „Friend“ verwenden, um privaten Mitgliedern von Zugriff zu gewähren einer Klasse zu anderen Klassen. Diese Funktion wird jedoch in C# nicht direkt unterstützt. Stattdessen stellt das Attribut „InternalsVisibleTo“ ein teilweises Äquivalent für den Zugriff auf private Mitglieder über Baugruppen hinweg bereit.

So verwenden Sie „InternalsVisibleTo“

Um einer Klasse in einer anderen Baugruppe den Zugriff auf private Mitglieder zu ermöglichen, Sie können das Attribut „InternalsVisibleTo“ zum Assemblymanifest hinzufügen. In der Datei „AssemblyInfo.cs“ können Sie beispielsweise den folgenden Code verwenden:

[assembly: InternalsVisibleTo("OtherAssembly")]
Nach dem Login kopieren

Dieses Attribut macht die Interna Ihrer Assembly für die Assembly mit dem Namen „OtherAssembly“ sichtbar.

Beispiel

Betrachten Sie die folgende Klasse:

internal class TestClass
{
    private int privateValue;
}
Nach dem Login kopieren

In einer separaten Assembly können Sie eine Klasse erstellen, um auf den privaten Wert zuzugreifen:

public class TesterClass
{
    public void DoSomething(TestClass instance)
    {
        // Set the value using reflection
        instance.GetType().GetField("privateValue", 
            BindingFlags.NonPublic | 
            BindingFlags.Instance).SetValue(instance, 10);
    }
}
Nach dem Login kopieren

Durch die Verwendung von Reflection und dem InternalsVisibleTo-Attribut können Sie für bestimmte Szenarios, wie z. B. Tests, assemblyübergreifend auf private Mitglieder zugreifen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine C#-Äquivalenz mit dem „Friend'-Schlüsselwort von C erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage