问题描述
如果我有一个 ICollection 属性并且我需要设置一个默认的字符串值。
public class UserDTO : LoginUserDTO
{
public string FirstName { get; set; }
public string LastName { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public ICollection<string> Roles { get; set; } = new List<string>() { "User" };
}
每次在控制器中使用此 DTO 时,我都需要将默认角色设为用户,但是,正如您在下面的 swagger 图片中所见,它始终为空
解决方法
这是正确的语法。
public ICollection<string> Roles { get; set; } = new List<string>() { "User" };
您的示例无法工作,因为您尝试在未实例化的集合中添加值。 (当时“角色”为空)。
第二个问题。由于“Add”返回“void”,因此不能将其分配给集合本身。
此示例仅适用于 C# 6 或更高版本。如果您不使用它,则必须在构造函数中以“旧方式”进行操作:
public UserDTO()
{
Roles = new List<string>() { "User" };
}