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.
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")]
Diese Zeile gewährt den internen Mitgliedern den angegebenen Assemblyzugriff Ihrer Assembly, einschließlich der internen Klasse, auf die Sie zugreifen möchten.
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; } }
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!