2009-08-18 6 views
0

私は2つのクラスがあります。同様のクラス


    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 

これを行うに追加するにはよりエレガントな方法はありますか? 1つのクラスで十分ですが、Addメソッドの引数が異なるため、実際には機能しません。

ご協力いただければ幸いです。

+0

ProvideObjectクラスとSubscribeObjectクラスはどのように見えますか?これらのクラスの定義を投稿すれば、あなたを支援することができます。 –

+0

これらはdllで定義されているため、私はそれらを制御できません。 –

答えて

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を使用しています。 –

+0

は2.0の下で動作するように見えます – Fredou

+0

2.0のジェネリックでの作業 –

0

Eh ..恐らくそうではありません。彼らは十分に異なっているので、あなたはそれらをインターフェースすることもできません。

1

あなたの追加機能は大丈夫です。あなたが渡される異なる変数型を持っている限り、関数名を同じにすることができます。同一のパラメータIntegerを使用しているため、削除クラスは同じクラスでは使用できません。

0

私は、1つのクラスで(購読と提供の)2つの責任を個人的に混同しません。自分自身だけで簡単に(Tの)リストから継承して簡略化することが可能なクラス

Public Class Subscribing 
    Inherits List(Of SubscribeObject) 
End Class 

Public Class Providing 
    Inherits List(Of ProvideObject) 
End Class 

あなたが本当に一つのクラスに降り、それが唯一のそれぞれSubscribeObjectProvideObjectを受け入れることができていることを確認するには、 SubscribeObjectおよびProvideObjectの両方に共通のインターフェイスを実装します。次に、インターフェイスを受け入れる汎用クラスを作成します。

' 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のコードについての私のコメントで目指していたことです。 –