Pourquoi ce qui est permis par le compilateur depuis annotation de variance rendre totalement aucun sens dans une telle situation?
Il est permis par le compilateur car jamais je n'aurais pensé que quelqu'un pourrait essayer de faire ça quand j'ai ajouté la variance des règles à la C# 4.0 compilateur.
Les avertissements du compilateur et les erreurs sont caractéristiques, et pour qu'une fonction soit mis en œuvre, il doit, au minimum, être pensé à un certain point avant de vous expédier votre compilateur. Je n'ai pas réussi à le faire, et n'ont donc jamais eu l'occasion de voire le débat de savoir s'il devrait y avoir un avertissement pour une telle situation.
Maintenant que vous avez porté à mon attention, la question est: doit - il être une fonctionnalité? Si le compilateur produire un avertissement (ou d'erreur) pour ce cas?
C'est un appel de jugement. Un certain nombre de choses que nous prenons en considération sont les suivants:
Le code est le genre de chose que quelqu'un peut taper dans la pensée qu'il fait quelque chose de sensé? On espère pas; on espère que le développeur qui en sait assez sur le système de type pour faire une interface variante sait aussi que la variance ne fonctionne que sur les types de référence. Mais peut-être qu'il y a des développeurs qui pourraient entrer dans la pensée qu'il va travailler. Il ne semble pas au-delà de plausibilité au moins. Il n'est pas clairement artificiel.
Le code est clairement erroné? Oui, il l'est probablement. Il semble très peu probable que quelqu'un délibérément veut écrire une interface qui ne ressemble en variante, mais en fait ne l'est pas.
Et ainsi de suite.
Je vais devoir lui donner plus de pensée, mais à première vue, il ressemble à ça en fait peut-être un décent avertissement à ajouter pour le compilateur. Je vais en parler avec l'équipe et nous allons envisager de l'ajouter à la Roslyn version.
Merci pour l'idée!