Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Reference dll's

Ik zit met volgende vraag:

Je kan in C# met de klasse Assembly de huidige (in uitvoer zijnde) Assembly opvragen, maar stel dat je het programma als volgt compileert:

Code: Selecteer alles

csc /target:winexe /reference:B.dll /reference:C.dll A.cs
Is er dan een methode om toegang tot de Assemblies van B.dll en C.dll te krijgen, en bijvoorbeeld een lijst met de geprogrammeerde types op te vragen. Ik heb het namelijk nodig om het doorzoeken van alle methodes (dus ook gerelateerde) op een bepaald attribuut.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
virtlink
Artikelen: 0
Berichten: 158
Lid geworden op: di 21 mar 2006, 18:44

Re: Reference dll's

Met de statische methode GetEntryAssembly() kan je de gecompileerde assembly opvragen. Daarvan krijg je de namen van de gerefereerde assemblies met GetReferencedAssemblies(). Van deze array van AssemblyName objecten kan je eentje in de statische Load() methode stoppen, waarmee je een Assembly object krijgt die die assembly voorstelt. Om alle typen in de assembly te krijgen roep je GetTypes() aan op het Assembly object.

Code: Selecteer alles

Assembly compiledAssembly = Assembly.GetEntryAssembly();

AssemblyName[] referencedAssemblies = compiledAssembly.GetReferencedAssemblies();

foreach(AssemblyName name in referencedAssemblies)

{

Assembly asm = Assembly.Load(name);

// Doe je ding, bijvoorbeeld:

Type[] types = asm.GetTypes();

foreach(Type t in types)

Console.Write(t.ToString());

}
(Code is niet getest.)
"Niet gehinderd door enige kennis van zaken..."

Terug naar “Informatica en programmeren”