Transformation d'une liste
Ce guide explique comment convertir une liste d'objets Client
(List<Client>
) en une liste de leurs interfaces IDic
correspondantes (List<IDic>
).
Pourquoi la diffusion directe échoue
La conversion directe d'un type dérivé (comme Client
) vers un type de base (IDic
) est autorisée dans .NET. Cependant, l’inverse n’est pas simple en raison des limites de covariance. Ces restrictions empêchent les opérations dangereuses dans lesquelles une liste de types de base pourrait contenir de manière inattendue des éléments de type dérivé, préservant ainsi la sécurité des types.
Méthodes de conversion efficaces
Deux méthodes fiables permettent d'obtenir la conversion souhaitée :
1. Tirer parti de IEnumerable<IDic>
(.NET 4 et versions ultérieures)
.NET 4 et les versions ultérieures prennent en charge la covariance avec IEnumerable<T>
. Cela permet la conversion de List<Client>
en IEnumerable<IDic>
, permettant une itération sur des objets Client
en tant qu'instances IDic
.
2. Construire une nouvelle liste
Pour créer un List<IDic>
, vous devez explicitement construire une nouvelle liste et la remplir avec les références de l'interface. .NET 4 propose la méthode ToList<T>()
pour cela. .NET 3.5 utilise Cast<T>()
suivi de ToList()
.
Remarque importante sur l'indépendance des données
Les deux techniques génèrent des listes distinctes, maintenant la sécurité des types. Surtout, les modifications apportées au List<Client>
original ne mettront pas automatiquement à jour le nouveau List<IDic>
. Seules les modifications directement apportées aux Client
objets eux-mêmes seront visibles dans les deux listes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!