0

I am trying to implement a generic interface with vb.

Public Interface IGenericRepository(Of T)

    Function getAll() As IQueryable(Of T)
    Function [get](ByVal id As Integer) As T
    Sub saveOrUpdate(BaseDTO As T)
    Sub delete(BaseDTO As T)
End Interface

Public Interface IWorkItemRepository
    Inherits IGenericRepository(Of WorkItem)

    Function getWorkItemsByRequestor(ByVal username As String) As IList(Of WorkItem)
End Interface

Public Class WorkItemRepository
    Inherits genericRepository(Of WorkItem)
    Implements IWorkItemRepository

End Class

I don't want to replicate the concrete implementations of the shared methods in Iworkitemrepository.

How do I achieve this with inheritance?

4

2 に答える 2

1

再現したくない共有コードがある場合は、基本実装が必要です。

Public Interface IInterface(Of T)
  Sub X
  Sub Y
End Interface

Public MustInherit Class BaseImpl
 Implements IInterface(Of MyClass)

 Sub X() Implements IInterface(Of MyClass)
   '//stuff here
 End Sub

 MustOverride Sub Y() Implements IInterface(Of MyClass)

End Class

Public Class DerivedImpl
  Inherits BaseImpl

  Overrides Sub Y()
     'do different stuff
  End Sub
End Class

Public Class AnotherImpl
  Inherits BaseImpl

  Overrides Sub Y()
     'do different stuff
  End Sub
End Class

上記のすべてがケースに入ることができるはずですIInterface(Of MyClass)

于 2012-08-06T11:51:25.550 に答える
0

インターフェイスで拡張メソッドを定義する可能性がありますか? そうすれば、そこに抽象基本クラスは必要ありません。

于 2012-08-06T11:54:05.163 に答える