Heim > Backend-Entwicklung > C++ > Wie kann ich über externe Assemblys in C# auf interne Klassen zugreifen?

Wie kann ich über externe Assemblys in C# auf interne Klassen zugreifen?

Patricia Arquette
Freigeben: 2025-01-01 09:13:10
Original
941 Leute haben es durchsucht

How Can I Access Internal Classes from External Assemblies in C#?

Zugriff auf interne Klassen über externe Assemblys

In bestimmten Szenarien kann es vorkommen, dass eine von Ihnen verwendete Assembly eine Methode bereitstellt, die einen Objekttyp zurückgibt, dies jedoch nicht der Fall ist Das Objekt gehört tatsächlich zu einer internen Klasse innerhalb der unzugänglichen Assembly. Dies wirft die Frage auf, wie Sie von Ihrer eigenen Assembly aus auf die Felder und Methoden dieser internen Klasse zugreifen können.

Lösung: InternalsVisibleTo

Während eine Änderung der vom Anbieter bereitgestellten Assembly nicht in Frage kommt ist eine Lösung, wenn Sie bestimmten Assemblys zu Testzwecken Zugriff auf die internen Mitglieder der Hersteller-Assembly gewähren möchten. Dies kann mit dem Attribut „InternalsVisibleTo“ erreicht werden.

Fügen Sie in der Datei „AssemblyInfo.cs“ Ihres Projekts die folgende Zeile hinzu:

[assembly: InternalsVisibleTo("name of assembly here")]
Nach dem Login kopieren

Diese Zeile gewährt den internen Mitgliedern den angegebenen Assemblyzugriff Ihrer Assembly, einschließlich der internen Klasse, auf die Sie zugreifen möchten.

Verwendung

Sobald Sie die hinzugefügt haben InternalsVisibleUm Ihre Assembly zu attributieren und neu zu erstellen, können Sie wie folgt von Ihrer externen Assembly aus auf die interne Klasse zugreifen:

public class MyClass
{
  public void AccessTest()
  {
    Vendor vendor = new Vendor();
    object value = vendor.Tag;

    // Cast the object to the internal class type
    InternalClass internalClass = (InternalClass)value;

    // Access the internal member
    string test = internalClass.test;
  }
}
Nach dem Login kopieren

Hinweis: Es ist wichtig sicherzustellen, dass die Assembly, auf die Sie Zugriff gewähren, verwendet wird Nur zu Testzwecken, da es bei Verwendung in der Produktion die Sicherheit Ihrer Anwendung gefährden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich über externe Assemblys in C# auf interne Klassen zugreifen?. 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