2010-11-12 4 views
2

Comment ajouter des éléments ObjectCollection à un IList (Of SomeType)? J'ai essayé avec:Ajouter des éléments de ObjectCollection à un IList (Of SomeType)

For Each obj As SomeType In listBox.Items 'ObjectCollection 
    MyObject.ItProperty.Add(obj) 'IList 
Next 

Aucun succès. Merci.

+0

Je pense qu'il vous manque du texte. Il se termine par "J'ai essayé avec:". –

+0

J'ai changé ça. Désolé et merci. – thom

Répondre

1

Si possible, l'interface IList non-générique serait l'approche la plus simple:

IList list = (IList)MyObject.ItProperty; 
list.Add(obj); 

Sinon, vous devrez:

  • trouver le T approprié (par réflexion)
  • résoudre la méthode Add à partir de IList<T> (en utilisant la réflexion)
  • invoke the Add méthode (en utilisant la réflexion)

que la réflexion, en particulier sur les génériques, n'est pas agréable. Comme alternative - si vous avez 4.0 vous pouvez essayer d'utiliser dynamic, mais notez que cela ne voit que l'API publique. La peine d'essayer si (seulement si IList échoue):

dynamic list = MyObject.ItProperty; 
list.Add(obj); // let's hope Add isn't an explicit interface implementation 
0

Pouvez-vous ajouter quelques détails sur ce qui échoue et où? Votre code devrait fonctionner.

Si vous obtenez une exception "Unable to cast object of type 'XXX' to type 'SomeType'." à la ligne "For Each obj", il existe au moins un élément de la collection listBox.Items qui n'est pas de type 'SomeType'.

Questions connexes