【问题标题】:Sharing methods between base classes for LinkButton, ImageButton, and ButtonLinkBut​​ton、ImageButton 和 Button 基类之间的共享方法
【发布时间】:2011-11-30 16:27:34
【问题描述】:

所以我想在我的网站中的几个控件的 onclick 事件中添加一些 javascript。它们都是 Button、LinkBut​​ton 和 ImageButton 类。

我创建了一个名为 CustomLinkBut​​ton 的类,它继承自 LinkBut​​ton 并且运行良好。它利用 OnLoad 方法并具有一些使用 ViewState 的属性。伟大的。现在我想将该代码用于 Button 和 ImageButton。

问题是,这三个类都继承自 System.Web.UI.WebControls.WebControl,它缺少所有这三个控件共有的一些重要方法和属性。

那该怎么办?在所有类中重复代码意味着可维护性差。我尝试过创建另一个类并在那里编写方法,但我遇到了同样的问题 - 我不能有一个接受所有三种类型的方法,但我不能编写一个具有多个约束的泛型方法。

想法?还是我只需要用重复的代码编写三个类?我已经进行了大量搜索,但找不到解决方案。这可能适用于很多情况,因此我问。谢谢各位。

编辑:他们共享的相关属性的示例是 CausesValidation 和 ValidationGroup。

【问题讨论】:

    标签: c# asp.net class multiple-inheritance


    【解决方案1】:

    尽管它们共享相似的功能和需求,但它们确实是用于不同目的的不同控件。我建议你把它们分开。如果有足够的时间、精力和测试,您可以拥有一个可以呈现任何内容的控件,但这真的是您想要的吗?

    你会认为LinkButtonImageButton 应该继承自Button,但这只是语义。您应该根据它们呈现的内容来考虑它们,即HTML

    • asp:button 是一个<input type="button">
    • asp:linkbutton 是一个<a>
    • asp:imagebutton 是一个<input type="image">

    【讨论】:

    • 这是有道理的。基本上,我可以弄清楚一些事情,但不值得付出努力。我会接受的。感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2023-03-12
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多