Поиск…


Создание общего класса

Генерируемый тип создается для адаптации, так что одна и та же функция может быть доступна для разных типов данных.

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Экземпляр общего класса

Создавая экземпляр того же класса с заданным другим типом, интерфейс класса изменяется в зависимости от заданного типа.

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

введите описание изображения здесь

Определить «общий» класс

Общий класс - это класс, который адаптируется к более позднему заданному типу, так что одна и та же функциональность может быть предложена для разных типов.

В этом базовом примере создается общий класс. У него есть суб, который использует общий тип T. При программировании этого класса мы не знаем тип T. В этом случае T имеет все характеристики Object.

Public Class SomeClass(Of T)
    Public Sub doSomething(newItem As T)
        Dim tempItem As T
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Использовать общий класс

В этом примере есть 2 экземпляра класса SomeClass. В зависимости от типа данных два экземпляра имеют другой интерфейс:

Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)

введите описание изображения здесь введите описание изображения здесь

Самый известный общий класс - List (of)

Ограничьте возможные типы

Возможные типы, переданные новому экземпляру SomeClass, должны наследовать SomeBaseClass. Это также может быть интерфейс. Характеристики SomeBaseClass доступны в этом определении класса.

Public Class SomeClass(Of T As SomeBaseClass)
    Public Sub DoSomething(newItem As T)
        newItem.DoSomethingElse()
        ' Insert code that processes an item of data type t.
    End Sub
End Class

Public Class SomeBaseClass
    Public Sub DoSomethingElse()
    End Sub
End Class

Создайте новый экземпляр данного типа

Создание нового типа универсального типа может быть выполнено / записано во время компиляции.

Public Class SomeClass(Of T As {New})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

Или с ограниченными типами:

Public Class SomeClass(Of T As {New, SomeBaseClass})
    Public Function GetInstance() As T
        Return New T
    End Function
End Class

Public Class SomeBaseClass
End Class

Базовому классу (если его не задано Object) должен быть меньше конструктор с параметром.

Это также можно сделать во время выполнения через отражение



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow