这是我遇到的错误
错误1无法将类型隐式转换
System.Collections.Generic.IList<Model.DTO.RoleDTO>
为System.Collections.Generic.List<Model.DTO.RoleDTO>
.存在显式转换(您是否错过了演员?)
我的代码:
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 = "administrator@email.com",
role = rl
};
Run Code Online (Sandbox Code Playgroud)
而型号:
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
juh*_*arr 10
只是改变r1
为IList<RoleDTO>
.
IList<RoleDTO> rl = new List<RoleDTO>();
Run Code Online (Sandbox Code Playgroud)
您不能混合泛型和非泛型列表,因为IList<T>
它不会继承IList
,List<T>
也不会从中继承List
,也不会实现IList
.
编辑
基于新的错误你有这意味着什么地方你正尝试将转换IList<RoleDTO>
到一个List<RoleDTO>
不能被隐式进行,因为任何人都可以写一个实现类IList<RoleDTO>
.因此,您需要进行显式转换,或更改要匹配的类型.问题是你的当前代码没有显示a IList<RoleDTO>
被隐式转换为a的任何地方List<RoleDTO>
.但这是我的一些猜测.如果UserDTO.roles
实际上被定义为a List<RoleDTO>
而不是IList<RoleDTO>
那么只需将更改r1
定义为a List<RoleDTO>
或更改UserDTO.roles
为a IList<RoleDTO>
.后者是我的偏好.如果要分配UserDTO.roles
类型变量,List<RoleDTO>
则应更改该变量的类型IList<RoleDTO>
.