mandag den 21. januar 2013

csharp Generic class constraints



Det er virkeligt lækkert med C# generics!
Her kan du sætte en type og sikre dig at denne type nedarver fra en anden klasse, implementerer et interface eller skal have en constructor.

Det er meget simpelt - du kan både have det i klasser, men også i dine metoder.
Derfor kan du nemt sige at denne metode skal bruge T where : ExperienceElement - som vil sige input T skal nedarve fra ExperienceElement.

Det er smart netop fordi du kan lave en generel klasse, og som nu forstår dine business regler fordi du kan sige du ønsker kun at bruge denne klasse med denne type af input (det skal være et tal), og derfor er denne type operation iorden (fordi du har sat begrænsing op der hjælper dig til at opfulde kriteriet).

Problemet er at generics ikke ved om det er strings eller integers du arbejder med, og at indsætte en string i en integer vil give fejl. Derfor kan du sætte en class constraint op der siger du kan kun lave denne klasse af denne type så du sikrer dig at hvis du arbejder ud fra nedarvning så har du hele tiden sikret at det input du bruger og lave din klasse af er en der nedarver fra din base-class eller en anden instans som sikrer at du kan gøre specifikke operationer ud fra det du har nedarvet efter at opnå.

Ingen kommentarer:

Send en kommentar

Kan du lide mit indlæg, har en kommentar, forslag eller andet på hjerte så skriv venligst