Er knaagt bij mij iets dat wat ik nu doe veel makkelijker moet kunnen, maar ik krijg niet bedacht hoe. Wat doet zich voor? Welnu het volgende (sterk vereenvoudigd!) voorbeeld:
- werknemer heeft als property werkgever
- werkgever heeft als property telefoonnummer
- telefoonnummer heeft als property type (fax, mobiel, werk, prive)
- geen van de objecten/properties is verplicht
Nu wil ik controleren of het telefoonnummer van de werkgever van een werknemer een mobiel nummer is. Daarvoor moet ik eerst de hele chain van properties controleren op null voordat ik het telefoontype kan controleren, dus:
Zou je dat niet doen, dan krijg je een foutmelding dat een object niet geinstantieerd is als bijvoorbeeld geen werkgever is ingevuld.
Nu de vraag: kan dat niet veel simpeler? Al dan niet met een stukje zelfgefabriceerde generieke code? Dus dat ik kan zeggen zoiets als:
En direct de hele chain van properties gecontroleerd wordt op het geinstantieerd zijn.
Ik heb zo'n gevoel dat hier al iets voor moet bestaan, maar ik krijg het niet gevonden. Het zal wel weer zo'n gevalletje worden, waarbij ik me voor mij hoofd kan slaan als ik de oplossing zie, maar alle hulp is welkom, ook eigen functies!
- werknemer heeft als property werkgever
- werkgever heeft als property telefoonnummer
- telefoonnummer heeft als property type (fax, mobiel, werk, prive)
- geen van de objecten/properties is verplicht
Nu wil ik controleren of het telefoonnummer van de werkgever van een werknemer een mobiel nummer is. Daarvoor moet ik eerst de hele chain van properties controleren op null voordat ik het telefoontype kan controleren, dus:
C#:
1
2
3
4
5
6
7
| if ((werknemer != null) && (werknemer.werkgever != null) && (werknemer.werkgever.telefoonnummer != null) && (werknemer.werkgever.telefoonnummer.type == "mobiel")) { // jippie het is een mobiel nummer } |
Zou je dat niet doen, dan krijg je een foutmelding dat een object niet geinstantieerd is als bijvoorbeeld geen werkgever is ingevuld.
Nu de vraag: kan dat niet veel simpeler? Al dan niet met een stukje zelfgefabriceerde generieke code? Dus dat ik kan zeggen zoiets als:
C#:
1
2
3
4
| if (Controleer(werknemer.werkgever.telefoonnummer.type, "mobiel")) { // jippie het is een mobiel nummer } |
En direct de hele chain van properties gecontroleerd wordt op het geinstantieerd zijn.
Ik heb zo'n gevoel dat hier al iets voor moet bestaan, maar ik krijg het niet gevonden. Het zal wel weer zo'n gevalletje worden, waarbij ik me voor mij hoofd kan slaan als ik de oplossing zie, maar alle hulp is welkom, ook eigen functies!
"There he goes. One of God's own prototypes. Some kind of high powered mutant never even considered for mass production. Too weird to live, and too rare to die."