有没有办法从DropDownList重载继承类中的Items.Add过程?

时间:2010-07-11 22:00:18

标签: .net asp.net drop-down-menu webui

我有自己的自定义类,它继承自DropDownList。有没有办法覆盖Items.Add程序?怎么样?

2 个答案:

答案 0 :(得分:1)

您是否有特定原因要继承此类,因为您是否将此类提供给接口?如果答案是否定的,那么你真的应该使用组合而不是继承;那你的问题就不存在了。

请参阅Prefer composition over inheritance?

答案 1 :(得分:0)

您无法覆盖默认的添加功能 - 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");