I have a method where I’m taking a generic object and using TypeOf to check what has been passed through. Now I would like to pass it a List(Of T) (T being anything) and no matter what T is I’d like to do the same thing to this list. I tried the following:
public sub foo(ByVal obj As Object)
if TypeOf obj Is List(Of Object) Then
'do stuff
end if
end sub
but this doesn’t seem to work if I pass it List(Of String), say. I suppose that List(Of Object) and List(Of String) are being treated as different objects, but I thought that since String is an object, the comparision might work.
Now I realise that this is as ugly as sin and I’m better off overloading the method to take List(Of T) as its parameter, but I’m mostly asking out of curiosity: is there a way of comparing the types List(Of Object1) and List(Of Object2) and getting a positive result, since they are both just List(Of T)?
List(Of Object)andList(Of String)are different types. You can do different things with them – for example, you can’t add aButtonto aList(Of String).If you’re using .NET 4, you might want to consider checking against
IEnumerable(Of Object)instead – then generic covariance will help you.Do you have any reason not to just make
Foogeneric itself?