116 votes

Comment vérifier si un objet est d'un certain type

Je suis de passage d'objets divers à un sous-programme à exécuter le même processus, mais en utilisant un objet différent à chaque fois. Par exemple, dans un cas, je suis l'aide d'une ListView et dans un autre cas, je suis de passage d'un DropDownList.

Je veux vérifier si l'objet est transmis est un DropDownList, puis d'exécuter du code si il est. Comment dois-je faire?

Mon code si loin, qui ne fonctionne pas:

Sub FillCategories(ByVal Obj As Object)
    Dim cmd As New SqlCommand("sp_Resources_Categories", Conn)
    cmd.CommandType = CommandType.StoredProcedure
    Obj.DataSource = cmd.ExecuteReader
    If Obj Is System.Web.UI.WebControls.DropDownList Then

    End If
    Obj.DataBind()
End Sub

194voto

Cody Gray Points 102261

Dans VB.NET, vous devez utiliser l' GetType méthode pour récupérer le type d'une instance d'un objet, et l' GetType() opérateur pour récupérer le type d'un autre type connu.

Une fois que vous avez les deux types, il vous suffit de les comparer à l'aide de l' Is de l'opérateur.

Ainsi, votre code doit effectivement être écrit comme ceci:

Sub FillCategories(ByVal Obj As Object)
    Dim cmd As New SqlCommand("sp_Resources_Categories", Conn)
    cmd.CommandType = CommandType.StoredProcedure
    Obj.DataSource = cmd.ExecuteReader
    If Obj.GetType() Is GetType(System.Web.UI.WebControls.DropDownList) Then

    End If
    Obj.DataBind()
End Sub

Vous pouvez également utiliser l' TypeOf opérateur au lieu de l' GetType méthode. Qui ressemblerait à ceci:

    If TypeOf Obj Is System.Web.UI.WebControls.DropDownList Then

    End If

Totalement banal, sans importance pinaille: Traditionnellement, les noms de paramètres sont en camelcase (ce qui signifie qu'ils commencent toujours par une minuscule) lors de l'écriture .NET code (soit VB.NET ou C#). Cela les rend faciles à distinguer d'un coup d'oeil dans les classes, les types, les méthodes, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X