maandag 19 november 2007

Verbergen van georven properties, methods of events van een klasse

Wanneer je een klasse in .Net erft, dan erf je ook automatsch alle properties, methods en events (members). Soms wil je dat een public member verborgen wordt voor de 'buitenwereld'. De IntelliSense zal de verborgen members dan niet in de lijst opnemen.
Het verbergen van zo'n member kan je op een aantal manieren doen:
  1. Verbergen in het properties venster van de designer.
    Hiervoor kan de attribuut System.Componentmodel.Browsable(bool browsable) gebruikt worden
  2. Verbergen voor IntelliSense.
    Hiervoor kan de attribuut System.Componentmodel.EditorBrowsable(EditorBrowsableState state) gebruikt worden
  3. Als Obsolete aanduiden, zodat de .Net compiler een waarschuwing of zelfs een foutmelding zal genereren.
    Hiervoor kan de attribuut System.Obsolete(string message, bool error) gebruikt worden

Bij veel members zijn de eerste twee attributen voldoende. De IntelliSense zal de members niet in de lijst opnemen, maar indien de member toch wordt aangeroepen zal de compiler de code nog wel accepteren.
Om de eerste twee attributen toe te kunnen passen dien je de member te overriden, bijv.:

public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
}
}


Bij sommige members zijn de eerste twee attributen niet voldoende en kan je ervoor kiezen om het derde attribuut te gebruiken. Hierbij zal de IntelliSense de member gewoon opnemen in de lijst, maar wordt wel aangeduid als [deprecated]. Indien je de error parameter van dit attribuut de waarde true meegeeft, zal de code door de compiler niet geaccepteerd worden.
Om het laatste attribuut toe te kunnen passen dien je het keyword new te gebruiken, bijv.:
public new string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
}
}

Bronnen:
Microsoft (System.Attribute derived classes)



Geen opmerkingen: