Имена сущностей были изменены, чтобы защитить их личности ...
Я создал класс с именем AnimalSearch (Of AnimalType As Animal (Of Int32))
Public Class AnimalSearch(Of AnimalType As Animal(Of Int32))
End Class
Я могу назвать этот класс так:
Dim s As New AnimalSearch(Of Monkey)()
Однако на момент звонка я не знаю, какой будет тип «Обезьяна».
Я пробовал следующую настройку, но, похоже, никуда не денется:
Public Shared Function GetAnimalSearchResults(criteria As SearchCriteria, animalType As Type) As SearchResults
Dim s As New AnimalSearch(Of animalType)()
' ... (etc.)
End Function
Который я тогда вызываю из другого класса где-то так:
Dim results As SearchResults = GetAnimalSearchResults(criteria, GetType(Monkey))
В другом месте я мог бы позвонить:
Dim results As SearchResults = GetAnimalSearchResults(criteria, GetType(Giraffe))
Проблема в конструкторе (Dim s As New AnimalSearch(Of animalType)()
). Его можно воспроизвести с помощью следующего, немного более простого кода:
Dim t As Type = GetType(Monkey)
Dim s As New AnimalSearch(Of t)()
Можно ли сделать то, что я пытаюсь сделать?