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_rights
是 null
那么我希望只有 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));
我正在尝试映射 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_rights
是 null
那么我希望只有 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));