Impossible de convertir implicitement le type de Système.Les Collections.IList' à 'Système.Les Collections.Génériques.Liste
C'est l'erreur que je rencontre
Erreur 1 Impossible de convertir implicitement le type
System.Collections.Generic.IList<Model.DTO.RoleDTO>
àSystem.Collections.Generic.List<Model.DTO.RoleDTO>
. Une conversion explicite existe (vous manque un plâtre?)
Mon code:
IList<RoleDTO> rl = new List<RoleDTO>();
rl.Add(new RoleDTO{ roleId = new Guid("D3DCBCDA-AD61-4764-B5A1-057D654F1C26"),
role = "admin" });
UserDTO user = new UserDTO
{
username = "administrator",
email = "[email protected]",
role = rl
};
Et le modèle:
namespace Model.DTO
{
public class UserDTO
{
public string username { get; set; }
public string email { get; set; }
public IList<RoleDTO> role { get; set; }
}
public class RoleDTO
{
public Guid roleId { get; set; }
public string role { get; set; }
}
}
Comment puis-je faire cela correctement?
L'erreur est assez clair. Vous déclarez
J'ai corrigé les fautes de frappe, aussi j'ai cette erreur : Erreur 1 Impossible de convertir implicitement le type de Système.Les Collections.Génériques.IList<Modèle.DTO.RoleDTO>' pour 'Système.Les Collections.Génériques.Liste<Modèle.DTO.RoleDTO>'. Une conversion explicite existe (vous manque un plâtre?)
Chaque
Je ne reçois pas toutes les erreurs avec ce code.
rl
non générique IList
, tandis que vous essayez d'attribuer à un IList<RoleDTO>
dans UserDTO.role
. Changez simplement la déclaration de IList rl
à IList<RoleDTO>
.J'ai corrigé les fautes de frappe, aussi j'ai cette erreur : Erreur 1 Impossible de convertir implicitement le type de Système.Les Collections.Génériques.IList<Modèle.DTO.RoleDTO>' pour 'Système.Les Collections.Génériques.Liste<Modèle.DTO.RoleDTO>'. Une conversion explicite existe (vous manque un plâtre?)
Chaque
List<T>
est un IList<T>
, mais pas l'inverse. Basé sur l'édition, je suppose public IList<RoleDTO> role { get; set; }
est en fait public List<RoleDTO> role { get; set; }
. Lire les erreurs soigneusement.Je ne reçois pas toutes les erreurs avec ce code.
OriginalL'auteur Gerald Hughes | 2015-05-05
Vous devez vous connecter pour publier un commentaire.
Il suffit de changer
r1
êtreIList<RoleDTO>
.Vous ne pouvez pas mélanger génériques et non génériques, listes, car
IList<T>
n'hérite pas deIList
etList<T>
n'hérite pas deList
et de ne pas mettre en œuvreIList
.MODIFIER
Basé sur la nouvelle d'erreur que vous avez cela signifie que quelque part vous tentez de convertir un
IList<RoleDTO>
à unList<RoleDTO>
qui ne peut pas être fait de façon implicite, car n'importe qui pourrait écrire une classe qui implémenteIList<RoleDTO>
. Donc, vous avez besoin de faire un cast explicite, ou de modifier les types de match. Le problème, c'est que votre code n'affiche pas partout qu'unIList<RoleDTO>
est implicitement converti enList<RoleDTO>
. Mais voici quelques suppositions de ma part. SiUserDTO.roles
est en réalité défini comme unList<RoleDTO>
au lieu deIList<RoleDTO>
alors il suffit de changerr1
être défini comme unList<RoleDTO>
ou modifierUserDTO.roles
être unIList<RoleDTO>
. Ce dernier serait ma préférence. Si vous attribuez desUserDTO.roles
à une variable de typeList<RoleDTO>
vous devez changer le type de cette variable pourIList<RoleDTO>
à la place.J'ai editted ma réponse à adresser à vous êtes nouvelle erreur.
Merci beaucoup monsieur 🙂
OriginalL'auteur juharr
Vous déclarez rl comme
IList
, pas commeIList<RoleDTO>
Changer cela:
pour cela:
D'une certaine manière DONC a ne pas montrer ma réponse correctement, j'ai juste marqué la partie "code" et maintenant, il indique ok.
Eu - merci Oscar!
OriginalL'auteur Oscar
Vous avez juste besoin de mettre à jour le
avec
OriginalL'auteur Vishwajeet Bose