Hoi,
Voor een applicatie heb ik een class buffer geschreven, deze class doet niets anders dan een waarde van een bepaald type ontvangen, deze in een buffer (vandaar de naam
) opslaan en deze vervolgens aan een aanvrager geven (en uit de buffer mikken). Omdat deze buffer een aantal malen binnen de applicatie gebruikt gaat worden voor een verschillend aantal datatypes moeten er dus een aantal verschillende buffers komen.
Omdat ik het niet netjes vond om een alle objecten in de buffer te mogen stoppen, maar een bepaald type object maar heb ik ervoor besloten om de methodes alleen een string te accepteren als invoer of een string te retourneren als uitvoer. Nu komt echter het probleem dat de buffer ook objecten van een zelfverzonnen type moet aankunnen. Het probleem is nu dat C# het dus niet heel erg tof vond om een zelfverzonnen type in een buffer van een string type te steken. typecasten zou kunnen, maar dit is natuurlijk een enorm ranzige oplossing...
Uit mijn C++ boek wat ik hier heb rondslingeren kon ik me herinneren dat het mogelijk is in C++ om templates te maken voor een methode dus zodat een onderstaande code mogelijk wordt:
T is dus nog niet ingevuld en wordt pas bij de methodeaanroep bepaald. Dit zou natuurlijk de ultieme oplossing voor mij zijn (dacht ik), alleen nog even in C# implementeren, how hard can it be?.....
Dit bleek toch wat tegen te vallen, het moet mogelijk zijn omdat het gebruikt wordt in de List class, immers het is mogelijk om een List van elk mogelijk type te maken, dus het zou toch ook mogelijk moeten zijn om dit te gebruiken voor mijn code? Heeft iemand hier ervaring mee?
Voor een applicatie heb ik een class buffer geschreven, deze class doet niets anders dan een waarde van een bepaald type ontvangen, deze in een buffer (vandaar de naam
Omdat ik het niet netjes vond om een alle objecten in de buffer te mogen stoppen, maar een bepaald type object maar heb ik ervoor besloten om de methodes alleen een string te accepteren als invoer of een string te retourneren als uitvoer. Nu komt echter het probleem dat de buffer ook objecten van een zelfverzonnen type moet aankunnen. Het probleem is nu dat C# het dus niet heel erg tof vond om een zelfverzonnen type in een buffer van een string type te steken. typecasten zou kunnen, maar dit is natuurlijk een enorm ranzige oplossing...
Uit mijn C++ boek wat ik hier heb rondslingeren kon ik me herinneren dat het mogelijk is in C++ om templates te maken voor een methode dus zodat een onderstaande code mogelijk wordt:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| template<typename T> T giveMax(T x, T y) { if (x>y) { return x; } else { return y; } } |
T is dus nog niet ingevuld en wordt pas bij de methodeaanroep bepaald. Dit zou natuurlijk de ultieme oplossing voor mij zijn (dacht ik), alleen nog even in C# implementeren, how hard can it be?.....
Dit bleek toch wat tegen te vallen, het moet mogelijk zijn omdat het gebruikt wordt in de List class, immers het is mogelijk om een List van elk mogelijk type te maken, dus het zou toch ook mogelijk moeten zijn om dit te gebruiken voor mijn code? Heeft iemand hier ervaring mee?
Mess with the best, die like the rest
