Переопределение свойства "Text" элемента управления, расширенного от Button с использованием C#

У меня проблема с расширением стандартного элемента управления WebControls.Button. Мне нужно переопределить свойство текста, но я получаю сообщение об ошибке:

не может переопределить встроенный член "System.Web.UI.WebControls.Button.Text.get", поскольку он не помечен как виртуальный, абстрактный или переопределенный

Я использовал следующий код для LinkButton, и он работал отлично:

public class IconLinkButton : LinkButton
{
    private string _icon = "";
    public string Icon
    {
        get
        {
            return _icon;
        }
        set
        {
            _icon = value;
        }
    }

    public override string Text
    {
        get
        {
            return "<i class=\""+Icon+"\"></i> " + base.Text;
        }
        set
        {
            base.Text = value;
        }
    }
}

Однако, делая то же самое для стандартной кнопки, вы получаете ошибку, описанную выше.

public class IconButton : Button
{
    private string _icon = "";
    public string Icon
    {
        get
        {
            return _icon;
        }
        set
        {
            _icon = value;
        }
    }

    public virtual string Text
    {
        get
        {
            return "<i class=\"" + Icon + "\"></i> " + base.Text;
        }
        set
        {
            base.Text = value;
        }
    }
}

Как я могу это исправить?

1 ответ

Решение

Это потому что LinkButton имеет virtual Текстовое свойство.. пока Button не.

Вы можете полностью скрыть базовую функциональность, используя new:

public class IconButton : Button {
    public new string Text {
        // implementation
    }
}

С помощью new полностью скрывает унаследованный член

Другие вопросы по тегам