2010-04-09 10 views
11

Jestem ciekawy, dlaczego tylko niektóre kontrolki System.Web.UI.WebControl implementują pewne interfejsy, gdy mają te same właściwości interfejsu.Dlaczego nie wszystkie klasy System.Web.UI.WebControl z właściwościami tekstowymi implementują ITextControl?

Na przykład, istnieje wiele kontroli, które mają właściwość Text ale tylko co następuje wdrażają ITextControl:

  • Label
  • Dosłowne
  • DataBoundLiteral
  • TextBox
  • ListControl

(TextBox i ListControl rzeczywiście wdrożyć IEditableTextControl który implementuje ITextControl)

TableCell, Button, HyperLink, a inni nie, więc muszę napisać kod jak ten

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

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

zamiast tego

control.Text = value; 

Czy to była decyzja projektowa, czy przeoczenie?

+0

Dobre pytanie. Myślę, że różnica między HtmlControl i WebControl. Ale chciałbym usłyszeć więcej informacji na ten temat ... – Sunny

+0

@Sunny Mogę zrozumieć, jeśli jeden jest HtmlControl, a drugi WebControl, ale istnieją różnice między różnymi WebControls. – jrummell

Odpowiedz

1

Myślę, że został zaprojektowany w porządku, nie sądzę, że był to niedopatrzenie; to są kontrole, w których tekst jest głównym celem celu kontroli. Widzę twoją sprawę, ponieważ byłoby to bardzo wygodne, gdyby kontrole wykorzystywały więcej tego typu interfejsów.

+0

To ma sens. – jrummell

Powiązane problemy