在 C# 中为 ICollection<string> DTO 的属性设置默认值

问题描述

如果我有一个 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 图片中所见,它始终为空

enter image description here

如何将认角色设置为用户??

解决方法

这是正确的语法。

public ICollection<string> Roles { get; set; } = new List<string>() { "User" };

您的示例无法工作,因为您尝试在未实例化的集合中添加值。 (当时“角色”为空)。

第二个问题。由于“Add”返回“void”,因此不能将其分配给集合本身。

此示例仅适用于 C# 6 或更高版本。如果您不使用它,则必须在构造函数中以“旧方式”进行操作:

public UserDTO() 
{
    Roles = new List<string>() { "User" };
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...