我试图映射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
。
这可能吗?
您可以这样创建地图:
Mapper.CreateMap<UserModel, User>()
.ForMember(user => user._accessRights, opt => opt.MapFrom(src => src.accessRights != null ?
src.accessRights.Union(new User()._accessRights) : new User()._accessRights));