Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.

Hasonló előadás


Az előadások a következő témára: "1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz."— Előadás másolata:

1 1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz

2 2 A DLL = Dynamic Link Library WIN32: fv-eket tartalmaz, melyeket ha ismerjük a szignatúráját (paraméterezését) bármely másik programból meghívhatjuk. A WIN32 DLL-jeiből kideríthető a bennük lévő fv-ek nevei, de a paraméterezése nem! Ráadásul nem mindegy, miben írták a DLL-t (C, Delphi, …). Pl: ZIP.DLL van benne olyan fv, amelynek megadunk két string-et (becsomagolandó file neve, eredmény file neve), és elvégzi a becsomagolást (betömörítést).

3 3.NET Assembly készítése: File / New / Project / Class Library Az Assembly nem tartalmazhat Main() fv-t. Az assembly-ben sok class lehet. Ezek közül több segéd-osztály is lehet, amelyet nem akarjuk, hogy ‘kifelé’ látszódjon, és felhasználható legyen. Azokat az osztályokat, amelyeket kifelé láttatni szeret- nénk, meg kell jelölni (public class).

4 4 public class Sakktabla {... } public class Sakktabla {... } Ez jelöli, hogy a sakktábla osztály a DLL-en kívül is látszódhat, felhasználható class SakkFigura {... } public class Kiralyno:SakkFigura {... } class SakkFigura {... } public class Kiralyno:SakkFigura {... } Ellentmondás: a Kiralyno örököl a SakkFigura-tól, amely azonban nem látható kifelé. Ha egy osztály publikus, akkor az összes ősének is publikusnak kell lennie.

5 5 class SakkFigura {... } public class Sakktabla { public SakkFigura[,] tabla = new SakkFigura[8,8];... } class SakkFigura {... } public class Sakktabla { public SakkFigura[,] tabla = new SakkFigura[8,8];... } Ellentmondás: a SakkFigura publikus, és ezen mezője is az, ezért a SakkFigura-nak is publikusnak kellene lennie! Minden olyan típusnak publikusnak kell lennie, amelyek szükségesek a publikus mezők, metódusok meghívhatóságához, használhatóságához…

6 6 class SakkFigura {... } public class Sakktabla { internal static void TablaTorol() {... } } class SakkFigura {... } public class Sakktabla { internal static void TablaTorol() {... } } Új védelmi szint: INTERNAL. DLL-en belül public-ként viselkedik. DLL-en kívülről nézve private-ként (nem látszik).

7 7 class SakkFigura {... } public class Sakktabla { internal protected void AlapHelyzet() {... } } class SakkFigura {... } public class Sakktabla { internal protected void AlapHelyzet() {... } } Új védelmi szint: INTERNAL PROTECTED. DLL-en belül public-ként viselkedik. DLL-en kívülről nézve, ha ott származtatjuk a Sakktabla-t, a gyerekosztályban már ‘protected’, vagyis meghívható.

8 8.NET Assembly kipróbálása: Másik project-et kell készíteni (Console Application). Ebben SOLUTION EXPLORER / REFERENCES / ADD REFERENCE / BROWSE. Általában a DLL-beli NAMESPACE-t itt be szoktuk using-al aktiválni! A.NET Studio bemásolja a DLL-t a Bin/Debug alkönyvtárba, hogy a generált.exe-vel együtt legyen.

9 9.NET Assembly készítése és kipróbálása: SOLUTION: projectek összessége File / New / Blank Solution File / New / Project / Class Library File / New / Project / Console Application Ekkor egyetlen solution-ban van a DLL, és a teszt program is. Ha a DLL-t újrafordítjuk, akkor a teszt program már automatikusan ‘látja’ az új verziót.

10 10 SOLUTION: projectek összessége Ha egy SOLUTION-ban vannak, akkor az ADD REFERENCE is egyszerűbb: a 3. fülön (‘Projects’) eleve rajta van a DLL. Ha egy SOLUTION-ban van több project, akkor be kell állítani hogy melyik induljon el (Set as Startup Project).


Letölteni ppt "1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz."

Hasonló előadás


Google Hirdetések