IList & lt; T & gt; à ObservableCollection & lt; T & gt;
J'ai une méthode dans une application Silverlight qui rentre actuellement un IList et je voudrais trouver la façon la plus propre à transformer cela en une ObservableCollection donc:
public IList<SomeType> GetIlist()
{
//Process some stuff and return an IList<SomeType>;
}
public void ConsumeIlist()
{
//SomeCollection is defined in the class as an ObservableCollection
//Option 1
//Doesn't work - SomeCollection is NULL
SomeCollection = GetIlist() as ObservableCollection
//Option 2
//Works, but feels less clean than a variation of the above
IList<SomeType> myList = GetIlist
foreach (SomeType currentItem in myList)
{
SomeCollection.Add(currentEntry);
}
}
ObservableCollection n'a pas un constructeur qui prendra un IList ou IEnumerable en tant que paramètre, donc je ne peux pas simple la nouvelle. Est-il une alternative qui ressemble plus à de l'option 1 que je suis absent, ou suis-je tout simplement trop tatillon ici et l'option 2 est vraiment une option raisonnable.
Aussi, si l'option 2 est la seule véritable option, est-il une raison pour utiliser un IList sur une IEnurerable si je ne suis jamais vraiment va faire, c'est d'itérer sur la valeur de retour et l'ajouter à un autre type de collection?
Merci d'avance
source d'informationauteur Steve Brouillard
Vous devez vous connecter pour publier un commentaire.
Vous pourriez écrire un moyen rapide et sale de la méthode d'extension pour le rendre facile
Maintenant, vous pouvez simplement écrire
Euh...
ObservableCollection
ne ont un constructeur quiIEnumerable<T>
etIList<T>
dérive deIEnumerable<T>
.De sorte que vous pouvez "juste un nouveau"
La méthode d'extension qui JaredPar vous a donné votre meilleure option dans Silverlight. Il vous donne la possibilité de transformer n'importe quel IEnumerable dans la collection observable automatiquement, simplement en se référant à l'espace de noms, et réduit la duplication de code. Il n'y a rien de construit dans, contrairement à WPF, qui propose le constructeur option.
ib.
De ne pas rouvrir le fil, mais un constructeur pour ObservableCollection qui prend IEnumerable a été ajouté à silverlight 4
Silverlight 4 N'ont la possibilité de simplement 'nouvelle' une ObservableCollection
Voici le raccourci de la méthode d'extension possible dans Silverlight 4.