http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl
Als je een project maakt, met daarin classes, en dit als classlib compileert krijg je een .Net assembly (projectnaam.dll). Deze kun je gewoon in toekomstige projecten gebruiken.LittleWan schreef op dinsdag 09 augustus 2005 @ 22:28:
beste,
Het zal echt wel een domme vraag zijn, maar ik zou graag een file maken waar ik vaak gebruikte methodes in schrijf. Deze zou ik in meerdere programmas willen gebruiken later.
Ik vraag me enkel af hoe ik dit doe, ik ben nl nogal nieuw met C# (heb lang geleden nogal wat java ervaring gehad maar dat zit ver :d)
Ik zou dus graag hebben wanneer ik mijn bestand aan mijn project toevoeg, de methodes die daarin staan kan gebruiken. Ik heb het dus niet over objecten of classes.
Let's don't. 'Code reuse' is niet Ctrl-C-Ctrl-V.curry684 schreef op dinsdag 09 augustus 2005 @ 22:30:
Classes met static methods maken.
[ Voor 12% gewijzigd door Hydra op 10-08-2005 09:50 ]
https://niels.nu
Ehm... Lijkt me toch wel dé manier hoor. Je maakt een class met static methods aan, en voegt deze aan je nieuwe project toe als je dit wilt hergebruiken. En het lijkt me sterk dat er in .NET een DLL aangemaakt wordt, want DLL's in een Framework is nou eenmaal not-done (vziw).Hydra schreef op woensdag 10 augustus 2005 @ 09:49:
[...]
Let's don't. 'Code reuse' is niet Ctrl-C-Ctrl-V.
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
riezebosch schreef op woensdag 10 augustus 2005 @ 09:55:
[...]
Ehm... Lijkt me toch wel dé manier hoor. Je maakt een class met static methods aan, en voegt deze aan je nieuwe project toe als je dit wilt hergebruiken. En het lijkt me sterk dat er in .NET een DLL aangemaakt wordt, want DLL's in een Framework is nou eenmaal not-done (vziw).
Verklaar je nader ?
Wat is een framework ? Een framework is een library van classes die je kunt hergebruiken. Hoe ga je dat hergebruiken ? Door ze als DLL in te voegen in een project.
Als DLL's in een framework not done zijn, vertel dat dan eens aan MS bv, want kijk eens naar hun .NET framework ? Kijk bv eens naar de bestanden waar de namespaces System.Data, System.Web, etc... in gedefineerd zijn, dat zijn DLL's.
Je gaat mij toch niet zeggen dat jij, als je een stuk code wilt hergebruiken, je de source-code gaat includen in jouw project ?
https://fgheysels.github.io/
Nooit met .Net gewerkt zeker. .Net assemblies zijn allemaal DLLs.riezebosch schreef op woensdag 10 augustus 2005 @ 09:55:
Ehm... Lijkt me toch wel dé manier hoor. Je maakt een class met static methods aan, en voegt deze aan je nieuwe project toe als je dit wilt hergebruiken. En het lijkt me sterk dat er in .NET een DLL aangemaakt wordt, want DLL's in een Framework is nou eenmaal not-done (vziw).
Ik vrees 't ergstewhoami schreef op woensdag 10 augustus 2005 @ 09:57:
Je gaat mij toch niet zeggen dat jij, als je een stuk code wilt hergebruiken, je de source-code gaat includen in jouw project ?
[ Voor 23% gewijzigd door Hydra op 10-08-2005 10:01 ]
https://niels.nu
Kan je de relatie tussen "Ctrl-C-Ctrl-V" en "Static methods" uitleggen?Hydra schreef op woensdag 10 augustus 2005 @ 09:49:
Let's don't. 'Code reuse' is niet Ctrl-C-Ctrl-V.
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Die mis ik ook compleetgorgi_19 schreef op woensdag 10 augustus 2005 @ 10:01:
[...]
Kan je de relatie tussen "Ctrl-C-Ctrl-V" en "Static methods" uitleggen?
Kun jij me de relatie tussen "Code reuse" en "static methods" uitleggen?gorgi_19 schreef op woensdag 10 augustus 2005 @ 10:01:
Kan je de relatie tussen "Ctrl-C-Ctrl-V" en "Static methods" uitleggen?
Zie boven.
[ Voor 30% gewijzigd door Hydra op 10-08-2005 10:04 ]
https://niels.nu
Hydra schreef op woensdag 10 augustus 2005 @ 10:03:
[...]
Kun jij me de relatie tussen "Code reuse" en "static methods" uitleggen?
[...]
Zie boven.
1
2
3
4
5
| Public Shared Function FormatSomething(value as String) as String ' Formatting code and return value End function |
Lijkt me toch redelijk herbruikbaar?
Kijk ook eens naar classes als System.Web.HttpUtility ; allemaal static methods en redelijk herbruikbaar?
[ Voor 21% gewijzigd door gorgi_19 op 10-08-2005 10:07 ]
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Wat wordt er hier langs elkaar heen geluld zeg
En als de TS dat niet bedoelt moet 'ie het maar even uit komen leggen.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
De TS wil code hergebruiken, daarop wordt een reactie "classes met static methodes maken" geven. Kwam over alsof het de bedoeling was dat het een grote vergaarback van functies was, van waaruit gecopy pasted werd.gorgi_19 schreef op woensdag 10 augustus 2005 @ 10:05:
Lijkt me toch redelijk herbruikbaar?
Kijk ook eens naar classes als System.Web.HttpUtility ; allemaal static methods en redelijk herbruikbaar?
Ik zeg ook helemaal niet dat static functies perse slecht zijn. Daarnaast gaf ik gewoon antwoord op de TS right?
[ Voor 6% gewijzigd door Hydra op 10-08-2005 10:12 ]
https://niels.nu
Tuurlijk bedoelt de TS DLL'tjes, da's de enige manier om een .NET assembly te reusen in je project. Hij wil echter vooral geen objects of classes, maar methods die veel gebruikte taken uitvoeren reusen in verschillende projecten. Daar C# geen global methods kent dien je deze dus static onder te brengen in een class, zoals de al genoemde HttpUtility een magistraal voorbeeld is. Of zie de enorme hoeveelheid static methods in System.Threading.Thread: een puik voorbeeld van hoe je in een OOP-technisch strak opgezet framework losse methods correct static integreert in de related classdrm schreef op woensdag 10 augustus 2005 @ 10:08:
Wat wordt er hier langs elkaar heen geluld zeg. Volgens mij bedoelt de TS ook gewoon DLL'etjes, en eventueel in die dll'etjes allemaal static methods. Dan is iedereen tevreden
En als de TS dat niet bedoelt moet 'ie het maar even uit komen leggen.
Wat overigens niet wegneemt dat een vergaarbak van losse static methoden in een grote class natuurlijk buitengewoon ranzig is. Maargoed. De TS was dan ook weer zo summier dat daar geen zinnig woord over te zeggen iscurry684 schreef op woensdag 10 augustus 2005 @ 10:13:
Tuurlijk bedoelt de TS DLL'tjes, da's de enige manier om een .NET assembly te reusen in je project. Hij wil echter vooral geen objects of classes, maar methods die veel gebruikte taken uitvoeren reusen in verschillende projecten. Daar C# geen global methods kent dien je deze dus static onder te brengen in een class, zoals de al genoemde HttpUtility een magistraal voorbeeld is. Of zie de enorme hoeveelheid static methods in System.Threading.Thread: een puik voorbeeld van hoe je in een OOP-technisch strak opgezet framework losse methods correct static integreert in de related class
Eh?
[ Voor 9% gewijzigd door Hydra op 10-08-2005 10:17 ]
https://niels.nu
Ik snap echt in godesnaam niet hoe je deze link legtHydra schreef op woensdag 10 augustus 2005 @ 10:12:
[...]
De TS wil code hergebruiken, daarop wordt een reactie "classes met static methodes maken" geven. Kwam over alsof het de bedoeling was dat het een grote vergaarback van functies was, van waaruit gecopy pasted werd.
Waarom zou je gaan copy/pasten als je je methods al static in de correcte class in een compiled assembly hebt staan? Waar haal je dat Ctrl-C Ctrl-V verhaal vandaan?
Nee, want de TS wil weten hoe je non-instance-related methods (hij zegt expliciet dat het niet over objects of classes gaat) reused in meerdere projecten. Daarvoor heeft .NET static methods in losse assemblies en geen enkele andere faciliteit.Ik zeg ook helemaal niet dat static functies perse slecht zijn. Daarnaast gaf ik gewoon antwoord op de TS right?
Natuurlijk is dat hopeloos ranzig. Daarom heeft ook niemand het voorgesteld en ik al zeker nietHydra schreef op woensdag 10 augustus 2005 @ 10:16:
[...]
Wat overigens niet wegneemt dat een vergaarbak van losse static methoden in een grote class natuurlijk buitengewoon ranzig is.
[ Voor 16% gewijzigd door curry684 op 10-08-2005 10:18 ]
Ik ga er altijd vanuit dat alle andere 'developers' compleet achterlijk zijn, dan kan het alleen maar meevallencurry684 schreef op woensdag 10 augustus 2005 @ 10:17:
Ik snap echt in godesnaam niet hoe je deze link legt
Waarom zou je gaan copy/pasten als je je methods al static in de correcte class in een compiled assembly hebt staan? Waar haal je dat Ctrl-C Ctrl-V verhaal vandaan?
Ik kwam nergens de info "compileren als classlib" tegen. Ik denk dat de TS niet weet dat je classlibs kunt maken en hergebruiken. Ik kan me niet voorstellen dat de TS niet weet dat je static methods kunt makenNee, want de TS wil weten hoe je non-instance-related methods (hij zegt expliciet dat het niet over objects of classes gaat) reused in meerdere projecten. Daarvoor heeft .NET static methods in losse assemblies en geen enkele andere faciliteit.
https://niels.nu
Ik denk het toch wel hoor:Hydra schreef op woensdag 10 augustus 2005 @ 10:19:
Ik kwam nergens de info "compileren als classlib" tegen. Ik denk dat de TS niet weet dat je classlibs kunt maken en hergebruiken. Ik kan me niet voorstellen dat de TS niet weet dat je static methods kunt maken
Hij weet dus wel hoe hij zijn bestand (assembly) moet toevoegen, maar niet hoe hij direct de methodes kan gebruiken zonder een instantie aan te maken.k zou dus graag hebben wanneer ik mijn bestand aan mijn project toevoeg, de methodes die daarin staan kan gebruiken. Ik heb het dus niet over objecten of classes.
Ik zie aan je posthistory dat je relatief nieuw bent in Programming & Webscripting, maar neem van me aan dat dat hier geen handige instelling is... Er loopt zogezegd best wat niveau rond hier en daarHydra schreef op woensdag 10 augustus 2005 @ 10:19:
[...]
Ik ga er altijd vanuit dat alle andere 'developers' compleet achterlijk zijn, dan kan het alleen maar meevallen
Ik zal mijn vraag eens herformuleren aan de hand van een voorbeeldje.
Wat ik dus wil is een .cs file maken met verschillende methodes in (functies bestaan niet in cs dacht ik).
Het hoeft dus geen gecompileerde dll of zo te zijn, gewone code is wat ik eigenlijk wil.
Die file zou er als volgt kunnen uitzien dan.
1
2
3
4
5
6
7
8
9
| .... public int som (int a, int b){ return a+b; } ... public int verschil(int a, intb){ return a-b; } .... |
maar dan een stuk complexer natuurlijk, dit is enkel als voorbeeld !
Deze file zou ik ergens globaal willen opslaan, niet in mijn project, zodanig dat ik ze van overal kan gebruiken.
Nu weet ik niet zo goed hoe ik die file moet indelen, enkel de methodes schrijven? namespaces? (geen idee wat die juist betekenen tot nu toe), classes?....
Nu ben ik bezig in een project en dan zou ik graag een methode gebruiken. wat moet ik dan precies doen als ik die methode wil oproepen? de file importeren in mijn project? enkel een verwijzing plaatsen? werken met 'uses'?...
bijvoorbeeld:
1
2
3
4
5
6
7
8
9
10
| ... public void Main(){ int x = 10; int y = 5; int j; int k; j = som(x,y); k = verschil(x,y); ....// rest van programma } ... |
Ik hoop dat het nu wat duidelijker is en dat ik het goed uitleg wat ik wil.
Hou zou mij niet verwonderen dat dit simpel op te lossen is.
en bedankt voor de reacties (voor en na nu
[ Voor 8% gewijzigd door LittleWan op 10-08-2005 11:07 ]
http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl
Dat kan je dus zo niet doen in C#. In C# kan je -zoals curry684 al zei- geen 'gewone' functies maken. Ze zullen altijd een onderdeel moeten zijn van een class.LittleWan schreef op woensdag 10 augustus 2005 @ 10:57:
wow, ben even overdonderd van alle reacties, ik ben er niet veel wijzer uit geworden tot nu toe, maar dat zal wel aan mij liggen
Ik zal mijn vraag eens herformuleren aan de hand van een voorbeeldje.
Wat ik dus wil is een .cs file maken met verschillende methodes in (functies bestaan niet in cs dacht ik).
Die file zou er als volgt kunnen uitzien dan.
C#:
1 2 3 4 5 6 7 8 9 .... public int som (int a, int b){ return a+b; } ... public int verschil(int a, intb){ return a-b; } ....
Echter, jij wilt geen 'class methods' hebben. Dit kan je oplossen door static methods te maken:
1
2
3
4
5
6
7
| public class UtilityClass
{
public static int som( int a, int b )
{
return a + b;
}
} |
Dit kan je dan gebruiken door dit te doen:
1
| int som = UtilityClass.Som (2, 4); |
Mja, je kan die class(es) met die static members natuurlijk wel in een ander project gaan zetten (dll-project), en dan kan je die dll in de applicaties waar je 'm nodig hebt, gaan includen.Het hoeft dus geen gecompileerde dll of zo te zijn, gewone code is wat ik eigenlijk wil.
Da's toch een stuk netter (en onderhoudbaarder) dan iedere keer die source-file in je project te gaan includen.
Dat kan je niet.Deze file zou ik ergens globaal willen opslaan, niet in mijn project, zodanig dat ik ze van overal kan gebruiken.
https://fgheysels.github.io/
Ok, ik zal het even proberen nader toe te lichten (hoewel m'n statement nu toch al helemaal onderuit gehaald is). Wat ik eigenlijk bedoelde te zeggen is dat voor zover ik wist/weet het niet mogelijk is native DLL's te maken. Bij een framework is het de bedoeling dat de applicatie puur draait in dat framework, zodat het ook mogelijk is deze op een ander OS te draaien die ook dat framework ondersteund.whoami schreef op woensdag 10 augustus 2005 @ 09:57:
[...]
Verklaar je nader ?
Wat is een framework ? Een framework is een library van classes die je kunt hergebruiken. Hoe ga je dat hergebruiken ? Door ze als DLL in te voegen in een project.
Als DLL's in een framework not done zijn, vertel dat dan eens aan MS bv, want kijk eens naar hun .NET framework ? Kijk bv eens naar de bestanden waar de namespaces System.Data, System.Web, etc... in gedefineerd zijn, dat zijn DLL's.
Je gaat mij toch niet zeggen dat jij, als je een stuk code wilt hergebruiken, je de source-code gaat includen in jouw project ?
Dat het wel mogelijk zou zijn DLL's te maken die passen in dat framework, wist ik dus nog niet. Daarbij gaat het natuurlijk niet helemaal op dat alle namespaces van .NET zelf ook in DLL's staan, want het framework zelf is natuurlijk wel native, en kan door de maker puur zo geïmplementeerd zijn voor eigen gemak en uitbreidbaarheid.
Misschien heb je wel gelijk dat ook deze DLL's puur .NET zijn, maar dat weet ik dus ook niet
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Jij ziet een framework als iets anders. .NET is een framework; het biedt je een aantal classes aan die je kan gebruiken etc...riezebosch schreef op woensdag 10 augustus 2005 @ 11:27:
[...]
Ok, ik zal het even proberen nader toe te lichten (hoewel m'n statement nu toch al helemaal onderuit gehaald is). Wat ik eigenlijk bedoelde te zeggen is dat voor zover ik wist/weet het niet mogelijk is native DLL's te maken. Bij een framework is het de bedoeling dat de applicatie puur draait in dat framework, zodat het ook mogelijk is deze op een ander OS te draaien die ook dat framework ondersteund.
Jij ziet een framework als iets dat platform-onafhankelijk is. Dat is niet iets wat noodzakelijk is om een framework te hebben.
https://fgheysels.github.io/
Ok dit eenvoudige voorbeeld lukt tot nu toewhoami schreef op woensdag 10 augustus 2005 @ 11:11:
[...]
Dat kan je dus zo niet doen in C#. In C# kan je -zoals curry684 al zei- geen 'gewone' functies maken. Ze zullen altijd een onderdeel moeten zijn van een class.
Echter, jij wilt geen 'class methods' hebben. Dit kan je oplossen door static methods te maken:
code:
1 2 3 4 5 6 7public class UtilityClass { public static int som( int a, int b ) { return a + b; } }
Dit kan je dan gebruiken door dit te doen:
code:
1 int som = UtilityClass.Som (2, 4);
Maar wanneer ik mijn code er in wil zetten, dan zeurt hij dat hij ' using System.Windows' niet kent en nog zo een paar
is het ook mogelijk om die Utilityclass in jou voorbeeld weg te kunnen laten? zodanig dat het zo wordt:
1
| int som = Som (2, 4); |
Heel jammer dat het niet werkt zonder dll en zo want de meeste van alle methodes zal ik niet nodig hebben.[...]
Mja, je kan die class(es) met die static members natuurlijk wel in een ander project gaan zetten (dll-project), en dan kan je die dll in de applicaties waar je 'm nodig hebt, gaan includen.
Da's toch een stuk netter (en onderhoudbaarder) dan iedere keer die source-file in je project te gaan includen.
Moet zeggen dat ik een beetje teleurgesteld ben over de mogelijkheden ik had het anders verwacht. Ik dacht dat dat met java vroeger veel beter ging.
ik ga eens kijken wat ik er van kan maken
[ Voor 7% gewijzigd door LittleWan op 10-08-2005 11:32 ]
http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl
Tja, dat komt omdat je geen reference hebt in jouw project naar System.Windows. En die heb je voor dit voorbeeld ook helemaal niet nodig, dus laat die regel waar using System.Windows staat maar weg.LittleWan schreef op woensdag 10 augustus 2005 @ 11:30:
[...]
Ok dit eenvoudige voorbeeld lukt tot nu toe
Maar wanneer ik mijn code er in wil zetten, dan zeurt hij dat hij ' using System.Windows' niet kent en nog zo een paar
Nee.is het ook mogelijk om die Utilityclass in jou voorbeeld weg te kunnen laten? zodanig dat het zo wordt:
code:
1 int som = Som (2, 4);
Tja, je kan natuurlijk wel die file iedere keer aan jouw project toevoegen, maar dan denk ik wel dat je op den duur een aantal kopiën van die file zult hebben.Heel jammer dat het niet werkt zonder dll en zo want de meeste van alle methodes zal ik niet nodig hebben.
Je gebruikt .NET gewoon niet goed.Moet zeggen dat ik een beetje teleurgesteld ben over de mogelijkheden ik had het anders verwacht. Ik dacht dat dat met java vroeger veel beter ging.
https://fgheysels.github.io/
ben nog maar een noob op het gebied van C# en wil het dus leren.whoami schreef op woensdag 10 augustus 2005 @ 11:36:
Je gebruikt .NET gewoon niet goed.
Zijn er geen goede boeken die aan te raden zijn om dit te leren?
Ik heb hier eentje liggen van een 600 tal bladzijden maar het staat niet goed uitgelegd
Ik wil de taal leren, niet programmeren want daar heb ik al ervaring mee
met een ClassLibrary project erbij en daar mijn code in, en dan die dll als referentie werkt perfect nu.
[ Voor 13% gewijzigd door LittleWan op 10-08-2005 11:47 ]
http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl
Wat ik zo uit je opmerkingen opmaak is dat je misschien wel ervaring hebt met programmeren, maar nog helemaal niet met object georienteerd programmeren. Het lijkt me dan ook handiger om je daar in te verdiepen (en vervolgens je oop probeerseltjes en expirimenten in .Net doet)LittleWan schreef op woensdag 10 augustus 2005 @ 11:39:
Ik wil de taal leren, niet programmeren want daar heb ik al ervaring mee
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Wees gerust, wat je niet gebruikt wordt niet in je project gelinkt. Je misbruikt dus geen ruimte of CPU-tijd of zoLittleWan schreef op woensdag 10 augustus 2005 @ 11:30:
[...]
Heel jammer dat het niet werkt zonder dll en zo want de meeste van alle methodes zal ik niet nodig hebben.
Java kent net zomin global methods als C#.Moet zeggen dat ik een beetje teleurgesteld ben over de mogelijkheden ik had het anders verwacht. Ik dacht dat dat met java vroeger veel beter ging.