2009-08-18 92 views
0

我有兩個類:相似的類具有不同的簽名


    Public Class Subscribing 

    Private _subscribingObjects As IList(Of String) 

    Public Sub Add(ByVal obj As SubscribeObject) 
     '...code...' 
    End Sub 

    Public Sub Remove(ByVal index As Integer) 
     '...code...' 
    End Sub 

    End Class 

    Public Class Providing 

    Private _providingObjects As IList(Of String) 

    Public Sub Add(ByVal obj As ProvideObject) 
     '...code...' 
    End Sub 

    Public Sub Remove(ByVal index As Integer) 
     '...code...' 
    End Sub 

    End Class 

有沒有更優雅的方式來補充做到這一點?一個類就足夠了,但由於Add方法有不同的參數,所以一個類就不行。

任何幫助,將不勝感激。

+0

ProvideObject和SubscribeObject類是什麼樣子的?發佈這些類的定義,我們可能會幫助你。 – 2009-08-18 17:24:11

+0

它們在dll中定義,所以我無法控制它們。 – 2009-08-18 17:42:26

回答

4

這個?

Public Class SubscribingProviding(Of t) 

Private _subscribingObjects As IList(Of String) 

Public Sub Add(ByVal obj As t) 
    '...code...' 
End Sub 

Public Sub Remove(ByVal index As Integer) 
    '...code...' 
End Sub 

End Class 
+0

如果我沒有弄錯,我認爲這隻會在.net 3.5中起作用。我使用2.0。 – 2009-08-18 17:28:35

+0

似乎在2.0下工作 – Fredou 2009-08-18 17:29:37

+0

泛型工作在2.0 – 2009-08-18 17:33:10

0

呃..可能不是。他們是不同的,你甚至不能連接它們。

1

您的添加功能應該沒問題。只要你有不同的變量類型被傳入,你可以使函數名稱相同。您的刪除子將不被允許在同一個類中,因爲它使用相同的參數Integer。

0

我個人不會將(訂閱和提供)兩個職責混合在一個類中。類本身可以很容易地從列表(Of T)已剛剛繼承簡化

Public Class Subscribing 
    Inherits List(Of SubscribeObject) 
End Class 

Public Class Providing 
    Inherits List(Of ProvideObject) 
End Class 

如果你真的想坐下來一類,並確保它只能接受SubscribeObjectProvideObject分別在SubscribeObjectProvideObject中實現通用接口。然後創建一個接受該接口的泛型類:

' Common interface ' 
Public Interface ISubscribeProvideObject 
End Interface 

' SubscribeObject and ProvideObject both implementing the common interface ' 
Public Class SubscribeObject 
    Implements ISubscribeProvideObject 
    '...' 
End Class 

Public Class ProvideObject 
    Implements ISubscribeProvideObject 
    '...' 
End Class 

' Generic class accepting both types ' 
Public Class SubscribingProviding(Of T As ISubscribeProvideObject) 
    Inherits List(Of T) 
    '... Add() and Remove() methods only needed if custom logic applies ...' 
End Class 
+0

使用一個接口是我正在瞄準我的上面有關SubscribeObject和ProvideObject的代碼的評論.... – 2009-08-18 19:40:59

相關問題