C# LinkButton、ImageButton和Button的基类之间共享方法

C# LinkButton、ImageButton和Button的基类之间共享方法,c#,asp.net,class,multiple-inheritance,C#,Asp.net,Class,Multiple Inheritance,因此,我想在我的网站中的几个控件的onclick事件中添加一些javascript。它们都是Button、LinkButton和ImageButton类 我创建了一个名为CustomLinkButton的类,该类继承自LinkButton,工作非常完美。它使用OnLoad方法,并具有一些使用ViewState的属性。伟大的现在,我想将该代码用于Button和ImageButton 问题是,这三个类都继承自System.Web.UI.WebControls.WebControls,它缺少这三个控件

因此,我想在我的网站中的几个控件的onclick事件中添加一些javascript。它们都是Button、LinkButton和ImageButton类

我创建了一个名为CustomLinkButton的类,该类继承自LinkButton,工作非常完美。它使用OnLoad方法,并具有一些使用ViewState的属性。伟大的现在,我想将该代码用于Button和ImageButton

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

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

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


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

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

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

  • asp:按钮是一个
  • asp:linkbutton是一个
  • asp:imagebutton是一个

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

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

  • asp:按钮是一个
  • asp:linkbutton是一个
  • asp:imagebutton是一个

这是有道理的。基本上,我可以想出一些办法,但这不值得努力。我要这个。谢谢你的意见。这很有意义。基本上,我可以想出一些办法,但这不值得努力。我要这个。谢谢你的意见。