作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 winforms 基本表单,其中包含对需要在派生表单中实现的某些方法的调用。我想确保我的派生形式确实在尽可能多的编译时支持下实现了这些方法。如果您想使用设计器,我们都知道无法将 winforms 类定义为抽象类的问题(参见 this question)。
我创建了一个接口(interface),其中包含需要以派生形式实现的方法签名。然后我直接从基类调用接口(interface)方法,如下所示:
((IMyFormInterface)this).SomeInterfaceMethod();
(请注意,我的基类没有继承IMyFormInterface
。如果继承了,那么派生类就不会被迫实现它。)
然后我以派生形式从接口(interface)继承(编译器强制我实现):
public partial class TestForm : BaseForm, IMyFormInterface
我(或其他用户)唯一需要记住的是继承IMyFormInterface
。
这样直接调用接口(interface)方法可以吗?我所有这一切的目标是能够尽可能接近确保派生表单在编译时而不是运行时实现这些“抽象”表单方法。
最佳答案
这是解决设计器限制的一种方法。另一种是使用设计器构建一个UserControl
,然后让您的表单基类抽象并实例化停靠到完整客户区的控件。
如果您使用这种方法,我会在您的构造函数中断言 (this is IMyFormInterface)
以尽早捕获该错误。
关于c# - 从 winforms 基类显式调用接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9185564/
我是一名优秀的程序员,十分优秀!