Comment dupliquer une ObservableCollection ?
-
mercredi 25 avril 2012 11:39
Bonjour,
Sur WinRT je n'ai pas trouvé ICloneable. Comment alors dupliquer une ObservableCollection ?
Mon idée est de faire une méthode Clone() manuellement des item de la collection et de faire une boucle avec nouvellecollection.add(itemclone)
public class FeedItem { public int ID { get; set; } public string Name { get; set; } public int Type { get; set; } public string PathImage { get; set; } public string PathIcon { get; set; } public FeedItem Clone() { FeedItem _copy = new FeedItem(); _copy.ID = ID; _copy.Name = Name; _copy.Type = Type; _copy.PathImage = PathImage; _copy.PathIcon = PathIcon; return _copy; } }
Mais n'y-a-t-il pas mieux ?- Déplacé Florin CiucaMicrosoft Contingent Staff, Owner vendredi 7 septembre 2012 11:35 (Origine :Développement d’applications de style Metro pour Windows 8)
Toutes les réponses
-
mercredi 25 avril 2012 17:29
Tout dépend si tu veux cloner les valeurs ou l'objet.
Pour info, IClone & co a été une erreur de conception (on clone l'objet ou le graphe de l'objet, ie ses "enfants" aussi ou pas). C'est une erreur reconnue par les architectes du framework
Donc si ce sont uniquement les valeurs de l'objets, ta solution est la bonne mais il en existe aussi qui font des sérialisation/désérialisation en mémoire.En gros, ca utilise le binarySerializer, ca sérialise l'objet dans un MemoryStream, puis désérialise immédiatement l'objet.
Du coup, tu as deux références vers des objets qui contiennent exactement les même données (si elles sont sérialisables, of course).
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Proposé comme réponse Ciprian Duduiala jeudi 26 avril 2012 08:11
- Marqué comme réponse Toss.net jeudi 26 avril 2012 12:02
-
jeudi 26 avril 2012 08:38
Bonjour,
Je confirme la réponse de Richard : le clone peut utiliser les mêmes objets ou vous clonez chaque élément et l’ajoutez à la nouvelle collection ou vous utilisez la sérialisation.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
mercredi 6 juin 2012 00:47
Bonjour,
Ce n'est pas systématiquement valable mais pour une copie des valeur (attention ce n'est pas un deep copy), MemberwiseClone constitue une alternative performante à la serialisation.
Vous avez aussi les solutions basées sur les Expression<T> qui peuvent être de bonnes solutions particulièrement sur les deep copy.
Bonne continuation.
Cyprien Autexier



