[C#] Automatisch property chain controleren op null

Pagina: 1
Acties:

  • Plekuz
  • Registratie: September 2002
  • Laatst online: 23-07 21:42

Plekuz

available in strong mint

Topicstarter
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:

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."


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:27

mulder

ik spuug op het trottoir

Werkgever.Mobielnummer? Of een collectie van telefoonnummers en die door fietsen? Een Hashtable? Object MobielNummer overerven van object Telefoonnummer? etcetc

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Het 'NULL Object pattern' probeert dit op te lossen.

https://fgheysels.github.io/


  • Plekuz
  • Registratie: September 2002
  • Laatst online: 23-07 21:42

Plekuz

available in strong mint

Topicstarter
Don Facundo schreef op dinsdag 12 december 2006 @ 15:08:
Werkgever.Mobielnummer? Of een collectie van telefoonnummers en die door fietsen? Een Hashtable? Object MobielNummer overerven van object Telefoonnummer? etcetc
Nee het punt is dat ik vooraf niet weet of het werknemer object is geinstantieerd en alle objecten onder werknemer, dus in dit voorbeeld werkgever en telefoonnummer. Door het werkgever.telefoonnummer object te benaderen terwijl werkgever niet bestaat loop je tegen een exception op.

"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."


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:27

mulder

ik spuug op het trottoir

Aha ik ben weer eens blind. Het is wel een rare manier van doen dan om van een eventueel niet bestaande werknemer, het eventueel niet bestaande telefoonnummer van de eventueel niet bestaande werkgever op te vragen.

oogjes open, snaveltjes dicht


  • Plekuz
  • Registratie: September 2002
  • Laatst online: 23-07 21:42

Plekuz

available in strong mint

Topicstarter
Don Facundo schreef op dinsdag 12 december 2006 @ 15:51:
Aha ik ben weer eens blind. Het is wel een rare manier van doen dan om van een eventueel niet bestaande werknemer, het eventueel niet bestaande telefoonnummer van de eventueel niet bestaande werkgever op te vragen.
Daar heb je gelijk in, maar ik heb dan ook gepoogd in mijn voorbeeld enigszins aansprekende termen te gebruiken, anders zou het helemaal niet meer te volgen zijn waarschijnlijk.

Het gaat ook niet zozeer om het feit dat het hier een werknemer, werkgever en dergelijke betreft, maar om de property chain die van voor naar achter gecontroleerd moet worden op geinstantieerd zijn, voordat je kunt controleren wat je eigenlijk wil controleren (in het voorbeeld of het een mobiel nummer is).

"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."


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Zoals ik reeds gezegd heb: NULL Object Pattern

https://fgheysels.github.io/


  • Plekuz
  • Registratie: September 2002
  • Laatst online: 23-07 21:42

Plekuz

available in strong mint

Topicstarter
whoami schreef op dinsdag 12 december 2006 @ 15:09:
Het 'NULL Object pattern' probeert dit op te lossen.
Klinkt ... uhm ... interessant. Mijn pogingen om hierop te googlen en een duidelijk voorbeeld te vinden zijn nog niet echt geslaagd te noemen, maar ik zoek verder. Als jij wel zo een voorbeeld kunt oplepelen, dan hou ik me aanbevolen!

edit: Ah mooi, ik had je wel gelezen hoor, maar was zelf nog aan het zoeken, vandaar. Dank je voor het meedenken.

[ Voor 12% gewijzigd door Plekuz op 12-12-2006 16:11 ]

"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."

Pagina: 1