12 votes

Comment puis-je effectuer un cast dans une ObservableCollection<object> ?

Comment puis-je lancer

from ObservableCollection<TabItem> into ObservableCollection<object>

cela ne fonctionne pas pour moi

(ObservableCollection<object>)myTabItemObservableCollection

13voto

ArsenMkrt Points 24447

Vous devez copier comme ceci

return new ObservableCollection<object>(myTabItemObservableCollection);

12voto

Marc Gravell Points 482669

En gros, tu ne peux pas. Pas maintenant, et pas dans .NET 4.0 .

Quel est le contexte ici ? De quoi avez-vous besoin ? LINQ a Cast<T> qui peut vous obtenir les données sous forme de séquence ou bien il existe des astuces avec des méthodes génériques (par exemple Foo<T>(ObservalbleCollection<T> col) etc).

Ou vous pouvez simplement utiliser l'outil non générique IList ?

IList untyped = myTypedCollection;
untyped.Add(someRandomObject); // hope it works...

4voto

Hath Points 5505

Vous pourriez utiliser IEnumerable.Cast<T>()

0voto

AnthonyWJones Points 122520

Tu ne peux pas. ObservableCollection<TabItem> ne dérive pas de ObservableCollection<object> .

Si vous expliquez pourquoi vous souhaitez le faire, nous pourrons peut-être vous indiquer une autre interface que vous pourrez utiliser.

0voto

Mario Binder Points 474

Merci pour toutes les réponses, mais je pense avoir résolu ce problème moi-même avec un "helpermethode".

Il existe peut-être une meilleure méthode ou une déclaration linq pour cela.

private void ConvertTabItemObservableCollection()
{
  Manager manager = this.container.Resolve<Manager>();
  foreach (var tabItem in manager.ObjectCollection)
  {
    TabItemObservableCollection.Add((TabItem)tabItem);
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X