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.

5. Skriv et ’database’ program med en hashtabel hvor man kan gemme data systematisk og<br />

søge effektivt!<br />

Reflection (og om hvordan man kommer videre):<br />

Begrebet reflection bruges om C#’s evne til at finde information om ’sig selv’, sine egne klasser,<br />

DLL filer og assemblies. Hvis denne information skaffes ’run time’ kaldes den RTTI Runtime Type<br />

Identification. Vi skal se mange eksempler på det i forbindelse med OOP.<br />

Reflection bruges ellers til at skaffe information om indholdet i en C# DLL eller EXE. .NET<br />

installeres med en række faste DLL filer som System.dll og System.Data.dll osv, der indeholder<br />

C#’s basisklasser (BCL).<br />

Når man skal finde rundt i disse basisklasser skal man være opmærksom på at namespaces (der er<br />

logiske strukturer) og DLL filer (som er fysiske virkeligt eksisterende strukturer) ikke altid svarer<br />

til hinanden. Fx findes klassen System.Array ikke i System.dll (hvad man ville tro!) men i<br />

mscorlib.dll!<br />

Reflection er også helt afgørende når C# skal kommunikere med andre fremmede objekter fx COM<br />

objekter fra den traditionelle Windows platform.<br />

Namespace System.Reflection indeholder de DLL filer som rummer denne funktionalitet.<br />

Programmet nedenfor anvender derfor en: using System.Reflection – for at inddrage dette<br />

namespace.<br />

Som nævnt tidligere indeholder dette namespace også klassen Assembly:<br />

Assembly.Load(”System.Windows.Forms”);<br />

Denne sætning loader DLL filen System.Windows.Forms I RAM hukommelsen således at<br />

programmet kan ‘referere’ klasserne i Forms.dll.<br />

Reflection gør det altså muligt dynamisk dvs mens programmet kører at inddrage, ændre og skrive<br />

til DLL filer og assemblies!<br />

Reflection gør det også muligt at loade en bestemt version af en DLL fil – således at mange<br />

forskellige versioner af den samme DLL fil kan eksistere på samme maskine (noget der før .NET<br />

ikke var muligt).<br />

Reflection vil her blive brugt til at udvikle nogle programmer der kan give os information om C#’s<br />

basisklasser.<br />

Uden en sådan viden er det ikke muligt at arbejde fornuftigt med C#!<br />

Udgangspunktet for den følgende kode - programmet dll_reflection.exe - er:

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

Saved successfully!

Ooh no, something went wrong!