我很好奇为什么只有某些System.Web.UI.WebControl控件实现某些与接口(interface)具有相同属性的接口(interface)。

例如,许多控件都具有Text属性,但是只有以下实现ITextControl:

  • 标签
  • 文字
  • DataBoundLiteral
  • TextBox
  • ListControl

  • (TextBox和ListControl实际上实现了实现ITextControl的IEditableTextControl)

    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;
    

    这是设计决定还是疏忽大意?

    最佳答案

    我认为设计合理,我不认为这是疏忽。这些是控件,其中文本是控件目的的主要焦点。我确实明白您的意思,因为让控件使用更多此类接口(interface)非常方便。

    关于asp.net - 为什么不是所有具有Text属性的System.Web.UI.WebControl类都实现ITextControl?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2609066/

    10-10 15:37