Reference dll's

Moderators: jkien, Xilvo

Reageer
Gebruikersavatar
Berichten: 829

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-- (Владимир Ильич Ульянов)

Berichten: 158

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..."

Reageer