Entwickler-Ecke

IO, XML und Registry - Funktionen einer DLL anzeigen


Ivy - Mi 21.07.10 09:43
Titel: Funktionen einer DLL anzeigen
Hallo zusammen,ich möchte die Funktionen meiner dll anzeigen. hab jetzt auch schon hab google abgesucht, aber nicht passendes und funktionierendes gefunden.
weiß jemand wie das funktioniert?


Christian S. - Mi 21.07.10 09:55

Hallo!

Die Assembly-Klasse bietet Dir z.B. die Funktion GetTypes und von den Typen kannst Du wiederrum über die Funktionen der Type-Klasse die Methoden bestimmen.

Grüße
Christian


Ivy - Mi 21.07.10 09:56

ahja, gehts auch noch i-wie genauer? versteh ich nicht so ganz was ich jetz machen muss^^


Christian S. - Mi 21.07.10 09:57

Du könntest länger als eine Minute selber drüber nachdenken ... :roll:


Ivy - Mi 21.07.10 10:08

naja^^
hab es damit probier http://msdn.microsoft.com/de-de/library/system.reflection.assembly.gettypes.aspx funktioniert aber nicht...


Christian S. - Mi 21.07.10 10:12

Zeig mal, wie Du das probiert hast, dann kann man da besser weiterhelfen.


Ivy - Mi 21.07.10 10:13


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Assembly SampleAssembly;
            SampleAssembly = Assembly.LoadFrom("d:\\Interop.ExtensionCord.dll");
            MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
           ParameterInfo[] Params = Method.GetParameters();
                foreach (ParameterInfo Param in Params)
            {
                Console.WriteLine("Param=" + Param.Name.ToString());
                Console.WriteLine("  Type=" + Param.ParameterType.ToString());
                Console.WriteLine("  Position=" + Param.Position.ToString());
                Console.WriteLine("  Optional=" + Param.IsOptional.ToString());
                Console.ReadKey();


Params ist aber immer null, und deshalb stürzt das Programm immer ab...


Christian S. - Mi 21.07.10 10:15

Okay, das sieht auf den ersten Blick eigentlich okay aus. Wie sollte denn Signatur von "Method1" eigentlich sein?


Ivy - Mi 21.07.10 10:17

user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Okay, das sieht auf den ersten Blick eigentlich okay aus. Wie sollte denn Signatur von "Method1" eigentlich sein?


hm? verstehe deine Frage nicht so ganz?!


Christian S. - Mi 21.07.10 10:18

Naja, welche Parameter / Rückgabewert sollte "Method1" haben. Instanzmethode oder statische Methode? usw.


Ivy - Mi 21.07.10 10:22

ähm keine ahnung^^ ich weiß nicht was in der dll drin ist. kp
will ja nur die funktionen auslesen^^


Christian S. - Mi 21.07.10 10:25

Ach so, weil Du oben schriebst, Du wolltest die Funktionen "Deiner" DLL auslesen.

Dann würde ich empfehlen, eine Schleife über alle Typen zu machen, darin eine Schleife über alle Methoden und dann ne Schleife über alle Parameter. Dann siehste, was drin ist.

Als Kontrolle kannste dann den Suche bei Google .NET REFLECTOR benutzen ;-)


Ivy - Mi 21.07.10 10:47

aha hört sich ziemlich kompliziert an. gibts da nicht ne einfacherer methode? Weil ich kenn die parameter der dll ja nicht.


Critter - Mi 21.07.10 14:43

user profile iconIvy hat folgendes geschrieben Zum zitierten Posting springen:
aha hört sich ziemlich kompliziert an. gibts da nicht ne einfacherer methode? Weil ich kenn die parameter der dll ja nicht.


Noch einfacher?
Sorry, aber ein bisschen Mühe wirst du dir auch geben müssen. user profile iconChristian S. hat drei einfache Schritte benannt. Versuche doch einfach einmal die einen nach dem anderen zu verstehen und umzusetzen.

Versuche erst einmal, die erste Schleife über alle Typen hin zu bekommen, dann kann man weiter sehen.

critter


danielf - Mi 21.07.10 15:43

Hallo,

ich hab mal ne ganz andere Frage. Was willst du den mit dem Ergebnis machen? Also wenn du alle Methoden-Namen und die entsprechende Parameter hast?

Gruß


Kha - Mi 21.07.10 18:35

user profile iconIvy hat folgendes geschrieben Zum zitierten Posting springen:
aha hört sich ziemlich kompliziert an. gibts da nicht ne einfacherer methode? Weil ich kenn die parameter der dll ja nicht.
Der Reflector ist unentbehrlich, aber wenn du die DLL sowieso schon referenziert hast (warum hast du dir nicht einfach die IntelliSense-Ergebnisse angeschaut :gruebel: ?), tut es auch der Object Browser.

PS: Ich hoffe doch, es geht hier wirklich um eine .NET-DLL.


Ivy - Do 22.07.10 14:47

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich hab mal ne ganz andere Frage. Was willst du den mit dem Ergebnis machen? Also wenn du alle Methoden-Namen und die entsprechende Parameter hast?

Gruß


ich muss es für jemandem im auftrag mache, was der jenige mit den funktionen will kp^^
aber er hat eben keine doku zu der dll un weiß deshalb nicht was sie für funktionen beinhaltet...


danielf - Do 22.07.10 14:53

Okay. Also wenn du es nicht Programmtechnisch benötigst und es wie Kha schon gefordert hat eine DLL-Assembly ist, kannst du es am einfachsten mit dem Object-Browser machen. Dazu bindest du die DLL ein und machst danach einen Doppelklick drauf.

Gruß


Ivy - Fr 23.07.10 07:36

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Okay. Also wenn du es nicht Programmtechnisch benötigst und es wie Kha schon gefordert hat eine DLL-Assembly ist, kannst du es am einfachsten mit dem Object-Browser machen. Dazu bindest du die DLL ein und machst danach einen Doppelklick drauf.

Gruß


ja so hab ichs jetzt auch gemacht.. trotzdem danke ;)