1 van 1

Reference dll's

Geplaatst: zo 05 jul 2009, 20:38
door Vladimir Lenin
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.

Re: Reference dll's

Geplaatst: zo 05 jul 2009, 23:43
door virtlink
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.)