0

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

4

2 回答 2

1

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

请参阅更喜欢组合而不是继承?

于 2010-07-11T22:30:15.943 回答
0

您不能覆盖默认的 Add 功能(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");
于 2010-07-11T22:15:11.070 回答