26.07.2013 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Brug vores egen NyAssembly.dll<br />

//fil: ny_app.cs:<br />

using NyAssembly;<br />

class app{<br />

}<br />

Dette skal så kompileres sådan:<br />

csc /r:nyassembly.dll ny_app.cs<br />

public static void Main(){<br />

Nyklasse ny=new Nyklasse();<br />

ny.Skriv();<br />

}<br />

System.Console.Read();<br />

Der skal være en explicit reference til nyassembly.dll - ellers kan programmet ikke kompileres.<br />

Hvis vi ikke havde brugt en using skulle vi i stedet have skrevet:<br />

NyAssembly.Nyklasse ny=new NyAssembly.Nyklasse();<br />

Hvis vi ikke havde gemt vores assembly i en fysisk fil (dvs hvis den kun havde ligget i RAM<br />

hukommelsen) kunne vi have brugt den med følgende kode:<br />

Assembly en_assembly=Assembly.Load("NyAssembly");<br />

Type type=en_assembly.GetType("NyAssembly.Nyklasse");<br />

MethodInfo en_metode=type.GetMethod("Skriv");<br />

object obj=Activator.CreateInstance(type);<br />

en_metode.Invoke(obj,null);<br />

Det er denne metode som professionelle builder-programmer anvender. Vi kan altså godt loade en<br />

assembly, selv om den ikke er gemt i en fil!! Vi kan instantiere en klasse, som ikke fysisk er gemt<br />

nogen steder, og vi kan få dens metoder til at køre!!<br />

Opgaver:<br />

1. Skriv flere metoder til Nyklasse efter det givne mønster!<br />

2. Lad være med at gemme assembly’en i en fil og prøv at kalde metoderne fra RAM<br />

hukommelsen!<br />

3. Skriv en ’klasse builder’, hvor brugeren indtaster nogle ønsker og hvor programmet så<br />

opretter en klasse og en assembly efter disse ønsker!

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

Saved successfully!

Ooh no, something went wrong!