Nel framework 2.0 è presente una nuova interfaccia ITextControl, il cui compito è molto semplice, almeno
quanto utile per chi sviluppa webcontrols. ITextControl identifica i controlli che espongono una
proprietà Text e che quindi sono utilizzabili per "mostrare un
output all'utente".
Implementano quindi ITextControl tutti quei controlli che
avendo una proprietà Text possono consentire di mostrare qualcosa all'utente.
Literal, Label, TextBox sono tutti controlli ITextControl. Tuttavia vorrei che
qualcuno mi spiegasse perchè LinkButton e Button non implementano questa
interfaccia. Questi ultimi implementano IButtonControl, che a sua volta espone
la proprietà Text, ma era cos' difficile fare in modo che IButtonControl
derivasse da ITextControl?
Pare una stupidaggine, ma forse non avete idea della quantità e
qualità di codice che questo avrebbe consentito:
Control textControl =
FindTextControl(container, "HeaderText");
if (textControl is ITextControl)
((ITextControl)textControl).Text = this.Columns[i].HeaderText;
else if (textControl is IButtonControl)
((IButtonControl)textControl).Text = this.Columns[i].HeaderText;
else
throw new InvalidOperationException("...");
sarebbe
diventato:
ITextControl textControl =
FindTextControl(container, "HeaderText");
if (textControl != null)
textControl).Text = this.Columns[i].HeaderText;
else
throw new InvalidOperationException("...");
A volte basta talmente poco.
powered by IMHO 1.3