2010-08-11 20 views
3

Si j'ai une liste ...VB.Net - Comment puis-je obtenir le type de l'objet contenu dans une liste

dim l as List(of MyClass) = new List(of MyClass) 

et je veux obtenir le type des objets contenus dans la liste, comment je fais ça?

La réponse évidente, qui ne semble pas être possible de ma mise en œuvre effective, serait de faire quelque chose comme ça ...

public function GetType(byval AList as IList(of GenericType)) as System.Type 
    dim lResult as system.type = nothing 
    if AList.Count > 0 then lResult = AList(0).GetType 
    return lResult 
end function 

Mais si la liste est vide et je veux encore connaître le type qu'il contient?

Répondre

3

Il y a un bon article sur ce sujet à MSDN, here

vous pouvez utiliser essentiellement GetGenericArguments() pour obtenir un tableau des types comme argument à votre type générique. Dans le cas d'une liste, il n'y a qu'un seul argument, donc vous obtiendrez ce dont vous avez besoin en utilisant par exemple

dim l as List(of MyClass) = new List(of MyClass) 
dim t as Type = (l.GetGenericArguments())(0) 
+0

Merci pour la résolution rapide. J'ai été enveloppé dans ce projet - ordonnancement trop optimiste typique défini par mon client. J'ai été capable d'utiliser votre exemple dans certains LINQ. Le lien l'article MSDN a fourni encore plus d'idées. C'est génial. Merci encore pour votre aide! –

+0

Merci pour les commentaires, cela m'a fait sourire :) Si vous avez trouvé ma réponse utile, vous pouvez la définir comme réponse acceptée en cliquant sur la grosse coche à sa gauche. – imoatama