43 Stimmen

C#-Reflexion und Auffinden aller Referenzen

Wenn ich eine DLL-Datei habe, möchte ich alle Aufrufe einer Methode in dieser DLL-Datei finden können. Wie kann ich das tun?

Wie kann ich im Wesentlichen programmatisch tun, was Visual Studio bereits tut?

Ich möchte nicht ein Tool wie .NET-Reflektor zu tun, aber Nachdenken ist gut und wahrscheinlich notwendig.

-2voto

Michael Punkte 1718

Siehe Stack Overflow Frage Eine Liste von Funktionen für eine DLL abrufen .

Aus dem obigen Text entnommen (danke Jon Skeet):

Für eine bestimmte Assembly können Sie Assembly.GetTypes verwenden, um die Typen zu erhalten, und dann für jeden Typ Type.GetMethods(), Type.GetProperties() usw. oder einfach Type.GetMembers() aufrufen.

Für die Plugin-Funktionalität ist es jedoch in der Regel eine gute Idee, eine gemeinsame Schnittstelle zu haben, die die Plugins implementieren müssen - das reduziert die Menge der Reflexion, die Sie verwenden müssen. Verwenden Sie Type.IsAssignableFrom(), um zu prüfen, ob ein Typ mit einer bestimmten Schnittstelle kompatibel ist.

Sie sollten sich auch das Managed Extensibility Framework ansehen, das die Implementierung eines Erweiterungssystems erleichtern kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X