11. juli 2007 - 00:03Der er
15 kommentarer og 1 løsning
Forskelligt indhold til samme function
Jeg har en klasse med forskellige funktioner. Klassen skal bruges i forskellige implementeringer af et program, og der er en/flere functioner der skal virke forskelligt afhængigt af hvilket program der køres.
Jeg har derfor laves klassen i en fil og vil så lave de program-specifikke functioner i en Local-classe-fil.
Så afhængigt af hvilken af disse local-classe-filer der er på det enkelte progtram vil funktionen virke efter hensigten.
Men hvordan skal jeg gøre det ?
Basic eksempel: Klasse bil Function TestNummerplade Den function kan skal være forskellig afhængig af hvilket land bilen kører i. Klassen bil laves i en dll-fil, men funktionen TestNummerplade (der også skal tilhøre klassen bil) skal ligge i en separat sted-specifik dll-fil.
Dit hoved programmer bestemmer hvilken DLL der skal benyttes og loader denne dynamisk og instantierer en klasse fra denne som implementerer et kendt interface.
Men forskellen på det og så have f.eks. en abstrakt klasse hvor du instantierer forskellige konkrete sub klasser der loades dynamisk fra en DLL er ret lille.
Mere konkret: Jeg har lavet en klasse som jeg skal bruge i flere programmer. Alle de funktioner der er indeholdt i klassen er ens for alle programmer. Men så er der nogle funktioner der skal virke forskelligt på de forskellige programmer. En måde at løse det på er at lave forskellige funktioner til de forskellige programmer. Men det synes jeg ikke er så "pænt", da opbygningen af et yderligere program, så kræver at jeg retter i selve klassen, med tilføjelse af en funktion.
Jeg vil i stedet lave en tilføjelse til klassen hvor den/de førnævnte funktioner er indeholdt. Disse tilføjelser vil så ligge i en separat dll-fil som er specifik for det enkelte program, og således skal der ikke pilles ved klassen.
Jeg forstår godt konceptet/tankegangen, men det kniber med udførelsen...
Eksempelvis laver jeg MASTER-klassen Bil således:
Class Bil
private _farve as string
public sub new() farve = "grøn" end sub
public function VisFarve() as string return _farve end function
Dette kompileres til en dll.
Slave-klassen:
Class Bil
public sub SkiftFarve() _farve = "rød" end sub
Hvordan fortæller jeg SLAVE-klassen at den skal være un "underklasse" af den anden Bil-klasse ? Skal jeg have den første dll-fil med i den anden eller hvordan ?
Og når jeg skal bruge det i hovedprogrammet, skal jeg så have begge dll'er med eller kun SLAVEN (hvis den indeholder Master og Slave?)
Eller er det muligt at lade slave-klassen hedde det samme som masterklassen, således at man bare bygger videre på en eksisterende klasse ? Programmet ser så kun slave-klassen og de kald den ikke kender sender den videre til masterklassen. Er det muligt ?
Har været ferie- og arbejdsramt, så jeg har ike fået kigget på det. Jeg er dog sikker på at det nok skal lykkes, så du får point og så må jeg oprette et nyt spm, hvis jeg har behov for yderligere hjælp.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.