Automapper 将源列表项附加到目标列表

Automapper append source list items to destination list

我正在尝试映射 List<string> 属性 但我希望目标对象始终具有默认值。源对象列表可以为空,也可以包含其他值。

如果列表为空,则目标 属性 将仅包含构造函数中定义的默认值。

如果列表包含一些数据,则应在列表中附加源值。

这是我的代码:

    List<string> _accessRights;
    public User()
    {
        _accessRights = new List<string>() { "user" };
    }
    public List<string> AccessRights
    {
        get { return _accessRights; }
        set { _accessRights = value; }
    }

这是我将如何使用它的示例。

UserModel user = new UserModel() { access_rights = new List<string>() { "power_user", "admin" } };
        User dbUser = Mapper.Map<User>(user);

因此,我想将 user, power_user, admin 保存在数据库中。 如果 access_rightsnull 那么我希望只有 user.

这可能吗?

您可以这样创建地图:

Mapper.CreateMap<UserModel, User>()
      .ForMember(user => user._accessRights, opt => opt.MapFrom(src => src.accessRights != null ?
        src.accessRights.Union(new User()._accessRights) : new User()._accessRights));