26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Hvilke klasser mv ligger der i en bestemt DLL-fil som f.eks. System.Windows.Forms.dll eller –<br />

hvilket er det samme – hvilke typer indeholder den assembly som hedder<br />

’System.Windows.Forms’? (Navnet på assembly’en er altid ’uden .dll’!).<br />

Det følgende program er et nyttigt program til at finde de indbyggede klasser i C#. Lidt senere skal<br />

præsenteres et program som kan vise data for den enkelte klasse.<br />

dll_reflection.exe:<br />

//fil: dll_reflection.cs<br />

//eks på reflection, få viden om en class i C# som inputtes som kommando linje parameter<br />

//eks: dll_reflection System.Web eller dll_reflection person (lokal DLL fil)<br />

//navne som ’System.Web’ eller ’person’ kaldes i C# jargon’en for ’friendly names’ (modsat kodede navne)<br />

//programmet skal ligge i .NET mappen sammen med csc o.a. ellers kan det ikke 'finde' C#-kerne-DLL’erne<br />

//programmet producerer en HTML fil med data om DLL filen:<br />

using System.Reflection;<br />

using System;<br />

using System.IO;<br />

public class app{<br />

public static void Main(string[] args){<br />

//try .. catch fanger evt fejl fx at der indtastes en ikke eksisterende DLL fil!<br />

Assembly ass=null;<br />

try{<br />

//assembly’en skal loades I RAM for at kunne analyseres:<br />

ass=Assembly.Load(args[0]);<br />

}catch{<br />

Console.WriteLine("{0} er ikke en gyldig DLL!",args[0]);<br />

}<br />

//GetTypes() returnerer en tabel af typer eller klasser:<br />

Type[] types=ass.GetTypes();<br />

string str=null;<br />

//foreach anvendes fordi antallet af klasser I DLL filen ikke kendes på forhånd<br />

foreach(Type t in types){<br />

str+=t+"";<br />

}<br />

//CreateText() returnerer en Writer:<br />

//hvis filen findes i forvejen overskrives den:<br />

//filen navngives med DLL navnet:<br />

StreamWriter writer=File.CreateText(args[0]+".html");<br />

//der skrives HTML koder til filen:<br />

writer.WriteLine("{0}",ass);<br />

writer.WriteLine("{0}",ass);<br />

writer.WriteLine("{0}",str);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!