I am passing various objects to a subroutine to run the same process but using a different object each time. For example, in one case I am using a ListView and in another case I am passing a DropDownList.
I want to check if the object being passed is a DropDownList then execute some code if it is. How do I do this?
My code so far which doesn't work:
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
In VB.NET, you need to use the
GetType
method to retrieve the type of an instance of an object, and theGetType()
operator to retrieve the type of another known type.Once you have the two types, you can simply compare them using the
Is
operator.So your code should actually be written like this:
You can also use the
TypeOf
operator instead of theGetType
method. Note that this tests if your object is compatible with the given type, not that it is the same type. That would look like this:Totally trivial, irrelevant nitpick: Traditionally, the names of parameters are camelCased (which means they always start with a lower-case letter) when writing .NET code (either VB.NET or C#). This makes them easy to distinguish at a glance from classes, types, methods, etc.