Pourquoi pas ICloneable<T>?

Est-il une raison particulière pour laquelle un générique ICloneable<T> n'existe pas?

Il serait beaucoup plus à l'aise, si je n'aurai pas besoin de le lancer à chaque fois que je clone quelque chose.

  • Non! avec tout le respect dû à la 'raisons', je suis d'accord avec vous, ils doivent avoir mis en place!
  • Il aurait été une bonne chose pour Microsoft d'avoir défini (le problème avec brew-votre-propre interfaces interfaces dans les deux assemblées seront incompatibles, même si elles sont sémantiquement identiques). Si j'avais été la conception de l'interface, il aurait trois membres, Clone de Soi, et CloneIfMutable, qui serait de retour T (le dernier membre soit de retour Clone ou le Soi, selon le cas). L'Auto membre ferait-il possible d'accepter une ICloneable(de Foo) en tant que paramètre et ensuite l'utiliser comme un Toto, sans avoir besoin d'un transtypage.
  • Ce qui permettrait une bonne clonage hiérarchie de classe, où héritables classes exposent protégés "clone" de la méthode, et ont scellé des instruments dérivés que d'exposer un établissement public. Par exemple, on pourrait avoir des Tas, CloneablePile:Pile, EnhancedPile:Pile, et CloneableEnhancedPile:EnhancedPile, aucun ne serait brisé si cloné (même si pas tous les exposer à un public méthode de clonage), et FurtherEnhancedPile:EnhancedPile (qui serait brisé si cloné, mais n'est pas d'exposer la méthode de clonage). Une routine qui accepte un ICloneable(de la Pile) pourrait accepter une CloneablePile ou un CloneableEnhancedPile...
  • ...même si CloneableEnhancedPile n'hérite pas de CloneablePile. Notez que si EnhancedPile hérité de CloneablePile, FurtherEnhancedPile aurait pour exposer un public méthode de clonage et peut être transmis à un code qui attendent pour le Clone, en violation de la Liskov Substituabilité Principe. Depuis CloneableEnhancedPile serait la mise en œuvre ICloneable(De EnhancedPile) et par voie de conséquence ICloneable(De la Pile), il pourrait être passée à une routine attend à une clonable dérivé de la Pile.
InformationsquelleAutor Bluenuance | 2009-02-11