Que voulez-vous exactement faire de toute façon? Voulez-vous mettre à jour la propriété de l'objet dans la liste, ou voulez-vous un autre objet qui est une copie de l'objet dans la liste mais avec un nom différent? Au lieu de fournir une méthode de clonage, vous pouvez fournir un constructeur de copie.
var newObj = new MyObj(List[2]);
newObj.Name = "fred";
Vous pourriez être en mesure de le faire en un seul appel, en fonction de ce que vous voulez faire. Si vous savez que vous allez toujours créer une copie avec juste un nom différent, vous voudrez peut-être faire quelque chose comme
var newObj = new MyObj(List[2],"fred");
et définir le nom lors de la construction. Mais sans créer explicitement un nouvel objet d'une manière ou d'une autre, vous ne pouvez pas faire ce que vous voulez. Sachez cependant que si vous avez une propriété qui est un autre objet, vous risquez de vous retrouver dans le problème de la 'copie en profondeur' (c'est pourquoi IClonable est déconseillé) comme quoi faites-vous quand vous avez besoin de copier cet objet? en toi nouveauObj? Est-ce que vous fournissez simplement une référence à la même instance? Ou copiez-vous cela aussi? Que faire si cet objet n'a pas de méthode clone/constructeur de copie, que faites-vous alors?
Les lignes directrices de conception-cadre contre la mise en œuvre conseille l'interface ICloneable. Fournissez simplement une méthode 'Clone'. – dtb
L'idée de clonage est la bonne, mais n'implémentez pas ICloneable. Voir http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx pour plus de détails. –
Existe-t-il un moyen rapide de copier toutes les propriétés sur le nouvel objet plutôt que de taper manuellement toutes les propriétés explicitement au cas où la classe obtiendrait une nouvelle propriété et la méthode clone oublie d'ajouter cette propriété à copier. – Jon