2011-11-29 36 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 

其實,如果你使用抽象類,你還不如不使用的接口。

相關問題