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

发布于 2024-09-08 20:54:42 字数 59 浏览 5 评论 0原文

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

I have my own custom class which inherits from DropDownList. Is there a way to override Items.Add procedure? How?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可是我不能没有你 2024-09-15 20:54:42

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

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

Is there a specific reason why you want to inherit from this class, as in are you providing this class to an interface? If the answer is no then you really should use composition over inheritance; then your problem wouldn't exist.

see Prefer composition over inheritance?

狼亦尘 2024-09-15 20:54:42

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

You can't override the default Add functionality -- ListItemCollection is sealed -- but you could write an extension method that extends the ListItemCollection class. Here's an example:

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);
        }
    }
}

You can then write something like:

DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("text", "value"), "Add");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文