我可以创建一个派生的抽象基类UserControl吗?ascx必须实现某些控件

本文关键字:ascx 实现 控件 UserControl 基类 创建 一个 抽象 派生 我可以 | 更新日期: 2023-09-27 18:27:20

我的情况是,我有一个实现为处理两种不同类型的控件。因此,在我拥有if(controlType == "Type1") ... else...的一些方法中,我想将其拆分为两个不同的控件,并使用基类来处理两个控件的公共操作。两个控件也有相同的标记,所以我想处理基类中的控件事件,但设计者似乎把这件事搞砸了。我几乎觉得自己是个泛型。ascx会很完美,但我不知道从哪里开始。

我可以创建一个派生的抽象基类UserControl吗?ascx必须实现某些控件

过去,我尝试过各种继承和用户控件的方法,包括一个从另一个ascx继承的ascx,现在回想起来,我觉得不值得这么麻烦,因为它的维护往往有点头疼。

从一个公共基类继承两个ascx控件是可以的,但我也发现尝试处理基类中的事件会变得困难。最后,我只是从事件中调用基类中的方法。您必须处理两个控件中的事件,但至少2年后人们可以遵循代码。

通用ascx将是可怕的,是可能的:

  • C#泛型用户控件
  • 是否可以在.Net 3.5中生成通用控件

但是,尽管这是一个聪明的解决方案,由于EDI不直接支持它,我怀疑它最终会增加维护问题。

我知道这可能不是你想要的答案,但拥有丑陋的if(controlType == "Type1")代码,尽管感觉不雅,但最终可能是最容易维护的,因为Visual Studio本身并不支持用户控件的继承。

祝你好运,如果你找到一个优雅的解决方案,请告诉我!