Родовой вопрос.Нужно ли размышление, чтобы ответить на это? - PullRequest
0 голосов
/ 31 марта 2011
Public Class B

End Class


Public Class D

    Inherits B

End Class

Public Class SomeClass


    Public Shared Sub SomeFunction2(Of TGeneric As B)()

        'Is there a way that I can tell whether the the Type used
        'as TGeneric is of type "B" or "D" without having 
        'an instance of a class also passed in?
        'Reflection? How?

    End Sub

End Class

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        SomeClass.SomeFunction2(Of D)()

    End Sub
End Class

1 Ответ

4 голосов
/ 31 марта 2011

Это зависит от того, что вы подразумеваете под "имеет тип B или D."1005 *

If GetType(B) Is GetType(TGeneric) Then
    ... they passed in B
Else
    ... they passed in a subclass
End If

Но это похоже на запах кода.Дженерики предназначены для вас , а не для того, что на самом деле является типом.Какова причина, вы должны знать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...