2010-04-09 22 views
11

Tengo curiosidad por qué solo algunos controles System.Web.UI.WebControl implementan ciertas interfaces cuando tienen las mismas propiedades de una interfaz.¿Por qué no todas las clases System.Web.UI.WebControl con propiedades de texto implementan ITextControl?

Por ejemplo, hay un montón de controles que tienen una propiedad de texto, pero sólo el apero siguiente ITextControl:

  • Etiqueta
  • literal
  • DataBoundLiteral
  • cuadro de texto
  • ListControl

(cuadro de texto y ListControl implementan realmente IEditableTextControl que implementa ITextControl)

TableCell, Botón, hipervínculo y otros no lo hacen así que tengo que escribir código como este

ITextControl textControl = control as ITextControl; 
TableCell tableCell = control as TableCell; 

if (textControl != null) 
{ 
    textControl.Text = value; 
} 
else if (tableCell != null) 
{ 
    tableCell.Text = value; 
} 

en lugar de esta

control.Text = value; 

¿Fue esta una decisión de diseño o un descuido?

+0

Buena pregunta. Creo que la diferencia está entre HtmlControl y un WebControl. Pero me encantaría escuchar más antecedentes sobre este ... – Sunny

+0

@Sunny Puedo entender si uno es HtmlControl y el otro es WebControl, pero existen diferencias entre varios WebControls. – jrummell

Respuesta

1

Creo que fue diseñado bien, no creo que haya sido un descuido; esos son los controles donde el texto es el foco principal del propósito del control. Veo su punto porque sería muy conveniente tener controles que utilicen más de estos tipos de interfaces.

+0

Eso tiene sentido. – jrummell

Cuestiones relacionadas