【问题标题】:How do I require that a class is a Windows.Forms.Control and implements an Interface?我如何要求一个类是 Windows.Forms.Control 并实现一个接口?
【发布时间】:2012-01-09 01:12:10
【问题描述】:

我不确定我在这里做的是否正确...

我正在编写一个应该是(相当)通用的用户控件。这有点像专门针对我们所做的一些内部工作而修改的电子邮件客户端。

视图由两个主要部分组成,一个消息列表和一个查看器。我需要这个查看器是可互换的,所以如果有人想要不同风格的视图,他们可以简单地处理一个事件并更改一个属性。我最初的想法是只拥有一个 INoteViewer,但由于我将它添加到我的表单中,我还需要保证这个对象是某种 Windows.Forms.Control。

如果我不能将它强制转换为 INoteViewer,我应该继续沿着这些思路并可能引发 ArgumentException,还是应该采取不同的方向并创建一个继承自 Windows.Forms.Control 的类?

【问题讨论】:

  • 这个工作..这样做,公共接口 INoteViewer where T:Control { }?
  • 在 Vb.Net 中会是这样的:INoteViewer(Of T As Control)

标签: vb.net forms inheritance interface


【解决方案1】:

要做你想做的事,你可以这样做:

Public Interface IMyInterface
    Sub Method1()
    Sub Method2()

End Interface

Public MustInherit Class MyBaseControl
    Inherits Control
    Implements IMyInterface

    Public MustOverride Sub Method1() Implements IMyInterface.Method1
    Public MustOverride Sub Method2() Implements IMyInterface.Method2
End Class

Public Class MyControl
    Inherits MyBaseControl

    Public Overrides Sub Method1()

    End Sub

    Public Overrides Sub Method2()

    End Sub
End Class

其实,如果你使用抽象类,你还不如不使用接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多