Situatie:
Voor bepaalde pagina's in een webprojectje zijn er 3 states voor de pagina:
1. Gebruiker is niet ingelogd
2. Gebruiker is wel ingelogd maar mag niet bij dit dossier
3. Gebruiker is ingelogd en bekijkt geldig dossier
De check hiervoor heb ik in een basepage gestopt die in zijn init gewoon de checks afloopt en afhankelijk van de actie een functie aanroept. Die functies in de basepage hebben alleen een throw new NotImplementedException().
In de client pagina's kan ik nu de drie functies die de states afhandelen overriden en zo met weinig code zorgen voor een nette afhandeling.
Alleen vraag ik me nu af, of ik kan forcen dat deze 3 functies worden geoverride, en dat er anders een compile error wordt gegooid. Als er voor een nieuwe pagina namelijk niet geoverride wordt zou een gebruiker namelijk een mooie NotImplementedException kunnen krijgen.
Ik heb al geprobeerd zowel de BasePage als de Client dezelfde interface te laten implementeren, maar de client implementeert nu expliciet die interface, en override dus niet.
Voor bepaalde pagina's in een webprojectje zijn er 3 states voor de pagina:
1. Gebruiker is niet ingelogd
2. Gebruiker is wel ingelogd maar mag niet bij dit dossier
3. Gebruiker is ingelogd en bekijkt geldig dossier
De check hiervoor heb ik in een basepage gestopt die in zijn init gewoon de checks afloopt en afhankelijk van de actie een functie aanroept. Die functies in de basepage hebben alleen een throw new NotImplementedException().
In de client pagina's kan ik nu de drie functies die de states afhandelen overriden en zo met weinig code zorgen voor een nette afhandeling.
Alleen vraag ik me nu af, of ik kan forcen dat deze 3 functies worden geoverride, en dat er anders een compile error wordt gegooid. Als er voor een nieuwe pagina namelijk niet geoverride wordt zou een gebruiker namelijk een mooie NotImplementedException kunnen krijgen.
Ik heb al geprobeerd zowel de BasePage als de Client dezelfde interface te laten implementeren, maar de client implementeert nu expliciet die interface, en override dus niet.