Есть ли способ перегрузить процедуру Items.Add в унаследованном классе от DropDownList?

У меня есть свой собственный класс, который наследуется от DropDownList. Есть ли способ переопределить Items.Add процедуру? Как?

2 ответа

Решение

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

см. Предпочитаете композицию по наследству?

Вы не можете переопределить функцию добавления по умолчанию - ListItemCollection запечатан - но вы могли бы написать метод расширения, который расширяет ListItemCollection учебный класс. Вот пример:

namespace Truthseeker.Extensions
{
    using System.Web.UI.WebControls;

    public static class ListItemCollectionExtensions
    {
        public static void Add(
            this ListItemCollection collection, 
            ListItem item, 
            string extraParameter)
        {
            if (extraParameter.Contains("Add"))
                collection.Add(item);
        }
    }
}

Затем вы можете написать что-то вроде:

DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("text", "value"), "Add");
Другие вопросы по тегам