【问题标题】:Can I create an abstract base class UserControl so derived .ascx must implement certain controls?我可以创建一个抽象基类 UserControl 以便派生的 .ascx 必须实现某些控件吗?
【发布时间】:2018-01-31 11:29:37
【问题描述】:
我的情况是我有一个控件被实现来处理两种不同的类型。因此,在我有if(controlType == "Type1")
...
else... 的某些方法中,我想将其拆分为具有基类的两个不同控件,以处理两个控件的通用操作。两个控件也将具有相同的标记,因此我想在基类中处理控件事件,但设计者似乎为我搞砸了。我几乎觉得通用的 .ascx 是完美的,但我不知道从哪里开始。
【问题讨论】:
标签:
c#
asp.net
inheritance
user-controls
【解决方案1】:
在过去,我尝试过各种有关继承和用户控件的事情,包括一个 ascx 从另一个 ascx 继承,但回想起来认为这是不值得的麻烦,因为它的维护往往有点麻烦头痛。
从一个公共基类继承两个 ascx 控件可以正常工作,但我也发现尝试处理基类中的事件变得很困难。最后,我只是从事件中调用了基类中的方法。您必须处理两个控件中的事件,但至少人们可以在 2 年后遵循代码。
通用 ascx 会很棒而且是可能的:
但是虽然这是一个聪明的解决方法,但由于 EDI 不直接支持它,我怀疑它最终会增加维护问题。
我知道这可能不是您要寻找的答案,但有丑陋的 if(controlType == "Type1") 代码,虽然感觉不优雅,但最终可能是最容易维护的,因为 Visual Studio 本身并不支持用户继承控制。
祝你好运,如果你找到一个优雅的解决方案,请告诉我!