0

ジェネリックインターフェイスとクラスに頭を悩ませようとしています。新しいメソッドでクラスを使用し、このタイプを使用してdata.methodを呼び出すときに、「T」を取得するにはどうすればよいですか?

Public MustInherit Class RepositoryBase(Of T)
    Implements IRepository(Of T)

    Private Data As IDAL

    Public Sub New()
        Data = DTOParserFactory.GetParser(T.GetType().ToString())
    End Sub

    Public Sub delete(BaseDTO As T) Implements Domain.Business.IRepository(Of T).delete
        'Data.delete(Convert.ChangeType(BaseDTO, TypeOf(Type))
    End Sub

    Public Function getAll() As System.Linq.IQueryable(Of T) Implements Domain.Business.IRepository(Of T).getAll
        'Return Data.getAll()()
    End Function
End Class
4

2 に答える 2

1

TypeTのオブジェクトを取得する必要があると思いますか?

コンストラクターで

Public Sub New()
    Data = DTOParserFactory.GetParser(GetType(T).ToString())
End Sub
于 2012-08-07T11:04:38.920 に答える
0

質問についてはよくわかりませんが、おそらくこれがあなたが探しているものです。

共通の基本クラスがあると仮定するとBaseDTO、RepositoryBase クラスを次のように定義します。

Public MustInherit Class RepositoryBase(Of T As BaseDTO) 

次に、次のようにクラスのインスタンスを宣言します。

Dim userRepository As New RepositoryBase(Of User)()

これにより、T が BaseDTO のサブクラスになるように制約され、BaseDTO のすべてのメソッドにアクセスできるようになります。

于 2012-08-07T11:26:14.617 に答える