2011-11-29 62 views
2

我不确定我在这里做的是正确的事情...如何要求某个类是Windows.Forms.Control并实现接口?

我正在写一个应该是(相当)通用的用户控件。这有点像修改后的电子邮件客户端,专门针对我们所做的一些内部事情量身定制。

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

我应该继续沿着这些线,如果我不能将它强制转换到INoteViewer,或者我应该走不同的方向并创建一个继承自Windows.Forms.Control的类,那么可能会引发一个ArgumentException?

+0

这是否work..do这样, 公共接口INoteViewer 其中T:控制 { }? –

+0

@Srinivas,而不是在.NET中 –

+1

在Vb.Net中会是这样的:INoteViewer(Of T As Control) –

回答

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 

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

相关问题