Почему не все классы System.Web.UI.WebControl со свойствами Text реализуют ITextControl? - PullRequest
11 голосов
/ 09 апреля 2010

Мне любопытно, почему только некоторые System.Web.UI.WebControl элементы управления реализуют определенные интерфейсы, если они имеют одинаковые свойства интерфейса.

Например, существует множество элементов управления, которые имеют свойство Text, но только следующая реализация ITextControl:

  • Метка
  • Дословный
  • DataBoundLiteral
  • TextBox
  • ListControl

(TextBox и ListControl фактически реализуют IEditableTextControl, который реализует ITextControl)

TableCell, Button, HyperLink и другие не делают этого, поэтому я должен написать такой код

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

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

вместо этого

control.Text = value;

Это было дизайнерское решение или недосмотр?

1 Ответ

1 голос
/ 09 апреля 2010

Я думаю, что все было в порядке, я не думаю, что это было упущением; это элементы управления, где текст является основным направлением назначения элемента управления. Я понимаю вашу точку зрения, потому что было бы очень удобно, чтобы элементы управления использовали больше интерфейсов такого типа.

...