我正在尝试映射List<string>
属性,但我希望目标对象始终具有默认值。在源对象列表上可以为空,也可以包含其他值。
如果列表为空,则Destination属性将仅包含构造函数中定义的默认值。
如果列表包含一些数据,则Source值应附加在列表中。
这是我的代码:
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
。
这可能吗?
答案 0 :(得分:2)
您可以像这样创建地图:
Mapper.CreateMap<UserModel, User>()
.ForMember(user => user._accessRights, opt => opt.MapFrom(src => src.accessRights != null ?
src.accessRights.Union(new User()._accessRights) : new User()._accessRights));