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


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: ITextControl interface