c# - Dynamisk tilføjelse af en klasse

Tags:    .net

Hej. Jeg har et lille problem jeg håber nogen kan hjælpe mig med. Jeg har en projekt ( projekt1 )med en klasse (klasse1 ). Klassen har nogle funktioner med indhold der er ligegyldigt i denne sammenhæng. jeg vil gerne kunne tilgå denne klasse ( klasse1 ) fra et andet projekt ( projekt2 ). Fra det nye projekt ( projekt2 ) vil jeg gerne kunne kalde funktionerne i klassen ( klasse1 ) som er oprettet i det andet projekt ( projekt1 ). Jeg vil desuden gerne have at hvis jeg i ( projekt 1 ) laver en ændring i ( klasse1 ), så gør ændringen sig gældende i ( projekt2 ) og andre potentieller fremtidige projekter uden at skulle kalde klassen ind hver gang den ændres.

På forhånd tak







Hej Thomas,

Du kan compile dit ene projekt som et Class Library hvilket vil få compileren til at spytte en DLL ud i stedet for en EXE fil. Denne DLL kan du så tilføje som en reference til dit andet projekt, og herefter vil du kunne bruge klasserne fra det første projekt på samme måde som var de en del af dit andet projekt :)

Mvh.

Kasper (TSW)



Hej Kasper

Det fungerer helt perfekt, så jeg bukker og takker.

Jeg må dog lige spørge om der findes en løsning hvor man ikke skal have en dll-fil liggende et bestemt sted for at ens program fungerer?

MVH
Thomas



Hej Thomas,

Tjah, det kan muligvis løses ved at få din DLL installeret i GAC'en (Global Assembly Cache). Det er dog ikke noget jeg selv har arbejdet med og umiddelbart tror jeg heller ikke at det er særligt pænt at gøre, til det du skal bruge det til. Hvorfor er det et problem at have DLL filen liggende sammen med din EXE fil? For mig at se er det ganske naturligt :)

Mvh.

Kasper (TSW)



Det er heller ikke et problem som sådan, det er svært at forklare, men du har hjulpet mig rigtigt meget, tak for hjælpen.

/Thomas



Du kan indlejre din .dll i din eksekverende .exe fil som en resource. Det betyder så også at du ikke "bare" kan skifte din .dll uden at skifte din .exe. I det lange løb er det bedre at have din .dll ved siden af din .exe.



t