Есть ли способ перегрузить процедуру 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");