Autor |
Beitrag |
Ivy
      
Beiträge: 228
|
Verfasst: Mi 21.07.10 09:43
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 21.07.10 09:57
Du könntest länger als eine Minute selber drüber nachdenken ... 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: Mi 21.07.10 10:08
naja^^
hab es damit probier msdn.microsoft.com/d...sembly.gettypes.aspx funktioniert aber nicht...
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 21.07.10 10:12
Zeig mal, wie Du das probiert hast, dann kann man da besser weiterhelfen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 21.07.10 10:15
Okay, das sieht auf den ersten Blick eigentlich okay aus. Wie sollte denn Signatur von "Method1" eigentlich sein?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: Mi 21.07.10 10:17
Christian S. hat folgendes geschrieben : | 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 21.07.10 10:18
Naja, welche Parameter / Rückgabewert sollte "Method1" haben. Instanzmethode oder statische Methode? usw.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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 .NET REFLECTOR benutzen 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: 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
      
Beiträge: 328
Erhaltene Danke: 3
Windows 7
Delphi 7 Pro.
|
Verfasst: Mi 21.07.10 14:43
Ivy hat folgendes geschrieben : | 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. Christian 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
_________________ Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 21.07.10 18:35
Ivy hat folgendes geschrieben : | 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  ?), tut es auch der Object Browser.
PS: Ich hoffe doch, es geht hier wirklich um eine .NET-DLL.
_________________ >λ=
|
|
Ivy 
      
Beiträge: 228
|
Verfasst: Do 22.07.10 14:47
danielf hat folgendes geschrieben : | 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
      
Beiträge: 228
|
Verfasst: Fr 23.07.10 07:36
|
|