C# 9 – Renforcement de la covariance
Avec le langage C#, lorsqu’une classe hérite d’une classe, il est possible de redéfinir une méthode ou une propriété dans la classe dérivée, si elle est déclarée abstraite ou virtuelle dans la classe de base. Cependant, jusqu’à la version 8, il n’est pas possible de modifier sa signature. La version 9 du langage C# renforce la covariance en permettant de modifier le type de retour, à condition qu’une conversion soit possible entre le type choisi vers le type de la classe de base.
Voici un exemple :
Dans la Product, la méthode Order permet de créer une commande d’un produit. Elle a la signature suivante :
Etant donné que la même méthode dans la classe Music retourne une instance de la classe MusicOrder, nous pouvons écrire :
De même, dans la classe Book :
Dans ces deux classes, le type de retour de la méthode Order a été modifié afin de typer plus fortement le type de retour de cette méthode.